)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":17,"context_line":"These series of patches implement changes required in Nova to allow the shares"},{"line_number":18,"context_line":"provided by Manila to be associated with and attached to instances using"},{"line_number":19,"context_line":"virtiofs."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Implements: blueprint libvirt-virtiofs-attach-manila-shares"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Depends-On: https://review.opendev.org/c/openstack/os-traits/+/832769"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"889ad2c5_f3e87538","line":20,"updated":"2022-08-26 10:26:41.000000000","message":"This patch does multiple things:\n1) extends the virt interface to to pass share_info down to the driver an update the signatures in all in tree drivers\n2) extends the compute manager to pass the share_info to the driver at certain actions\n3) implement the share_info handling in the libvirt driver\n3.1) checks requirements for shares and reports the new capabilities to signal that\n3.2) extends the config handling for virtio mounts\n3.3) implements mount / unmount\n4) changes the scheduler to request new capabilities\n\nIn the future you can try to split patches along these lines to help the reviewer.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":true,"context_lines":[{"line_number":17,"context_line":"These series of patches implement changes required in Nova to allow the shares"},{"line_number":18,"context_line":"provided by Manila to be associated with and attached to instances using"},{"line_number":19,"context_line":"virtiofs."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Implements: blueprint libvirt-virtiofs-attach-manila-shares"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Depends-On: https://review.opendev.org/c/openstack/os-traits/+/832769"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"adc54eee_a3eea9bf","line":20,"in_reply_to":"889ad2c5_f3e87538","updated":"2022-08-31 14:51:42.000000000","message":"I totally agree. I did that patch early after arriving on the team.\nAnd at that moment, it was difficult for me to understand the \"full picture\". So I ended up writing large patches.\nI sincerely apologize for this, as it makes the review difficult.\nIn more recent patches, I learned, and now I tend to split stuff better and reduce the size of patches.\n\nAnd I have set the commit message with the above description.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"11108d787970607ec6a2164842a5d0080116fa14","unresolved":false,"context_lines":[{"line_number":17,"context_line":"These series of patches implement changes required in Nova to allow the shares"},{"line_number":18,"context_line":"provided by Manila to be associated with and attached to instances using"},{"line_number":19,"context_line":"virtiofs."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Implements: blueprint libvirt-virtiofs-attach-manila-shares"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Depends-On: https://review.opendev.org/c/openstack/os-traits/+/832769"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"5bdff4f3_29ed973b","line":20,"in_reply_to":"adc54eee_a3eea9bf","updated":"2022-09-01 09:41:34.000000000","message":"No worried :)","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f28a73c7ff5b43af0f76bfdc9c07f3d58cc67781","unresolved":true,"context_lines":[{"line_number":22,"context_line":"These series of patches implement changes required in Nova to allow"},{"line_number":23,"context_line":"the shares provided by Manila to be associated with and attached to"},{"line_number":24,"context_line":"instances using virtiofs."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Implements: blueprint libvirt-virtiofs-attach-manila-shares"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Depends-On: https://review.opendev.org/c/openstack/os-traits/+/832769"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":54,"id":"a8c66fbd_e92c658a","line":25,"updated":"2024-08-28 10:47:26.000000000","message":"Mention here that share locking only works properly after https://review.opendev.org/c/openstack/manila/+/926491 is landed.","commit_id":"d0d56b0bd76dd8c2253e576fb527d04e006552fb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d908131aec97ead9346709a3bac5144d8a2b2cad","unresolved":false,"context_lines":[{"line_number":22,"context_line":"These series of patches implement changes required in Nova to allow"},{"line_number":23,"context_line":"the shares provided by Manila to be associated with and attached to"},{"line_number":24,"context_line":"instances using virtiofs."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Implements: blueprint libvirt-virtiofs-attach-manila-shares"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Depends-On: https://review.opendev.org/c/openstack/os-traits/+/832769"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":54,"id":"7154571a_3b356357","line":25,"in_reply_to":"a8c66fbd_e92c658a","updated":"2024-09-17 15:07:07.000000000","message":"Done","commit_id":"d0d56b0bd76dd8c2253e576fb527d04e006552fb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"148c95ddd11120a7aaa1fd6bff060ae63dc33f2c","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Implements: blueprint libvirt-virtiofs-attach-manila-shares"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Depends-On: https://review.opendev.org/c/openstack/os-traits/+/832769"},{"line_number":29,"context_line":"Change-Id: I3a4bca7f03cfa9a1bc20f3f9937bb9b44fe2cde3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":54,"id":"680563d8_8d9e3f17","line":28,"updated":"2024-08-28 12:27:32.000000000","message":"you should modify the depends-on to only ask for https://review.opendev.org/c/openstack/manila/+/926491","commit_id":"d0d56b0bd76dd8c2253e576fb527d04e006552fb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"c62140737a5bb06972a74e32a022de02120f3ab1","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Implements: blueprint libvirt-virtiofs-attach-manila-shares"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Depends-On: https://review.opendev.org/c/openstack/os-traits/+/832769"},{"line_number":29,"context_line":"Change-Id: I3a4bca7f03cfa9a1bc20f3f9937bb9b44fe2cde3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":54,"id":"d5746596_0e768bb4","line":28,"in_reply_to":"680563d8_8d9e3f17","updated":"2024-09-09 16:11:54.000000000","message":"Done","commit_id":"d0d56b0bd76dd8c2253e576fb527d04e006552fb"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc549e8712d4e482dd86fc3d41817799c2ae28d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"81c4f3e8_fea36e88","updated":"2023-01-24 18:20:52.000000000","message":"I have one question left about notifying the out of tree driver authors on the ML about the signature change in the virt/driver.py as there is a new mandatory parameter.","commit_id":"be010108f60cd6b782e4f131a6c364de43ea8e9f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"60403221610a97a785158ebfee52d71dbb55f72b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"06ef4fca_7c45c14b","updated":"2023-02-10 14:11:37.000000000","message":"we need os-taits 2.10 in global requirement first, then we need to bump the min req of os-traits in nova to be able to merge this","commit_id":"ab2373a3e2d41012ac9e8596d889f0612ff960f2"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6cd6dfdabb46f8c46ca06b9e5cff3f20b8936295","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"384720bd_9ff41599","updated":"2023-03-13 15:22:45.000000000","message":"Let\u0027s continue to review it later.","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4128183b24798390366366d6652a359ddd699197","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":38,"id":"30ce7450_821845b9","updated":"2023-11-15 16:43:51.000000000","message":"I stop here today. I haven\u0027t looked at the test code in this PR","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f9a9ee6245aa579e214200c360489c9c7e405061","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"e227dd71_416f0469","updated":"2024-02-25 22:49:43.000000000","message":"this still need to be refactored so that the volume mounting is done in the spawn/destroy code paths so the virt driver api change should be remvoed.\n\nthe compute manager rpc api should be called attach/detatch share not mount/unmount","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"53de4514_522ab533","updated":"2024-02-28 13:13:31.000000000","message":"I see couple of bugs, like the in use check is not scoped to compute, and resume on host boot intances loosing shares","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"44a3e6ce5123eca7e33ee02b000b7d277726925e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":46,"id":"6515e42c_a05c635b","updated":"2024-05-13 05:55:23.000000000","message":"hi, I wrote a little bit of my opinion.","commit_id":"239dd1e7b5fdf299f1a9d604797ddae9a6250814"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"73cb6b04a4673762024b38ec0a1d7fa001a9dbc5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":49,"id":"aedc3c10_3f9a0be0","updated":"2024-06-12 14:58:49.000000000","message":"just some notes for the moment, but I\u0027ll provide new comments tomorrow","commit_id":"134fba10db5354fb2c9d9c2eea083d589f819412"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4f490fd9fd287eac04ee6dde71911c5809db2a1c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"56b41d6e_3c3bb141","updated":"2024-06-19 14:13:04.000000000","message":"i need to reload context on this to review properly but gigi is right about the virt driver api change \ni think adding the new fucntion to the api is ok as is calling it form the manager\n\nbut i have not fully reviewd the rest of the patch","commit_id":"980cb1eb70ff4a48e13e429f9ae509cbfa83203d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"960b8923f4bf7076eaf03c1b359b27235e099183","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"383ea113_d77ffce8","updated":"2024-07-17 14:15:28.000000000","message":"I found a bug while testing this locally .","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"0c7361ff_ce7c409d","updated":"2024-07-03 15:44:55.000000000","message":"OK, I was eventually able to review all of that large meat, and I\u0027m like 99% all good, but I found a holding problem : the RPC version you check in the rpcapi client is wrong. Please update it.","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"dd08e71083abbcf0340ccc90ab5ccff0dc5ee7ba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"f8e61a10_511e597e","updated":"2024-07-02 11:22:44.000000000","message":"looks OK to me.","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b04cc170591201f12f7ff7b3fcee67a21d965bc6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":54,"id":"caa2e881_c5c97be5","updated":"2024-08-28 12:54:31.000000000","message":"only one error handling nit remains from me. The rest looks OK\u003e","commit_id":"d0d56b0bd76dd8c2253e576fb527d04e006552fb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7ff89e6789345e9d2803a84c0f7482df9bc7ff03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":58,"id":"99c20c11_35f62891","updated":"2024-10-11 11:34:30.000000000","message":"One error handling issue remain (putting the share_mapping into error if manila api is down). The rest looks good.","commit_id":"b2e797dfcc3765e85e8b20f46d5be29f1c75148d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"93d363b0c2736dcf683afbc1f9aeb7600efe6b51","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":59,"id":"1db08294_7c78a660","updated":"2024-11-13 14:34:55.000000000","message":"I\u0027m torn about the error handling management case and whether we need to add it in a new revision. +1 for now to signal that I\u0027m OK with merging for now but gibi\u0027s -1 is valid tho and we need to settle a consensus.","commit_id":"2ea9e1d29fe0c85f930f0d02c9c7b61f0f82350c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"999ab040a39bf66615c3fc1eecb31673e9bab38b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":59,"id":"4b23ae0c_4df086eb","updated":"2024-11-05 12:57:36.000000000","message":"One error handling issue the rest looks good to me.","commit_id":"2ea9e1d29fe0c85f930f0d02c9c7b61f0f82350c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0ff4ebedacec4f4f3afb360a74f306b650e670a8","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":60,"id":"3bb2d18e_fd89e1e1","updated":"2024-11-15 10:20:11.000000000","message":"No new change since my last review. There is one remaining error handling inconsistency I would like to ask to address. Namely if the instance is put into ERROR state during instance delete because the manila shares of the instance could not be cleaned up, then set the related share_mapping to ERROR as well to signal the reason of the failed instance delete.\n\nI\u0027m not holding up the series due to this as this does not prevent the instance delete to be retried by the user and eventually succeed. Please file a bug and link it to the known issue section of the documentation. Then I\u0027m happy to upgrade my +1 to +2.","commit_id":"157e0f4d2bef85497a525f038aa01d87da8af64c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9fcc9fb1dcd8b735426c8a090fa84c1ec3457175","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":60,"id":"1f76fc75_4bc4d2a3","updated":"2024-11-15 10:46:40.000000000","message":"still +1, +2 once https://review.opendev.org/c/openstack/nova/+/871642/48 is modified","commit_id":"157e0f4d2bef85497a525f038aa01d87da8af64c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9fcc9fb1dcd8b735426c8a090fa84c1ec3457175","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":60,"id":"424fa293_638333c5","in_reply_to":"3bb2d18e_fd89e1e1","updated":"2024-11-15 10:46:40.000000000","message":"I agree with Gibi, please create a bug report and then modify https://review.opendev.org/c/openstack/nova/+/871642/48 to explaining it and then I\u0027ll +2 that change.","commit_id":"157e0f4d2bef85497a525f038aa01d87da8af64c"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"8bc0781dffb9688e13d03a436ede6b0fb9c9f84f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":60,"id":"78c540ee_860aa94b","in_reply_to":"424fa293_638333c5","updated":"2024-11-19 16:02:14.000000000","message":"https://bugs.launchpad.net/nova/+bug/2089034","commit_id":"157e0f4d2bef85497a525f038aa01d87da8af64c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"88a33b268d00fddf6496cea52a93b3834394f0d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":61,"id":"97c99b64_9036e78f","updated":"2024-11-20 15:03:09.000000000","message":"Thanks for the bugreport upgrading my vote to +2","commit_id":"6f9aa12a3ce4b2b7197290130493903ea842016e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9eba8658e660449a39e5b1ded3e0fa2d16f9b3e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":61,"id":"31291787_8255d112","updated":"2024-11-21 09:24:41.000000000","message":"doc patch is updated","commit_id":"6f9aa12a3ce4b2b7197290130493903ea842016e"}],"nova/compute/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f9a9ee6245aa579e214200c360489c9c7e405061","unresolved":true,"context_lines":[{"line_number":6035,"context_line":"            host_statuses[instance.uuid] \u003d host_status"},{"line_number":6036,"context_line":"        return host_statuses"},{"line_number":6037,"context_line":""},{"line_number":6038,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":6039,"context_line":"        self.compute_rpcapi.mount_share("},{"line_number":6040,"context_line":"            context, instance, share_mapping)"},{"line_number":6041,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"c41428a9_42dd848d","line":6038,"updated":"2024-02-25 22:49:43.000000000","message":"this should be attach_share as it will not mount the share","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"061d704866c50f326d1866f215a3998cfb6a3406","unresolved":true,"context_lines":[{"line_number":6035,"context_line":"            host_statuses[instance.uuid] \u003d host_status"},{"line_number":6036,"context_line":"        return host_statuses"},{"line_number":6037,"context_line":""},{"line_number":6038,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":6039,"context_line":"        self.compute_rpcapi.mount_share("},{"line_number":6040,"context_line":"            context, instance, share_mapping)"},{"line_number":6041,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"2e08b81b_b216f72f","line":6038,"in_reply_to":"15d58058_a446170f","updated":"2024-06-04 12:44:44.000000000","message":"@Sean could you check back to this too","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"375c4278bb07665fa14bfce003c8175fda135306","unresolved":true,"context_lines":[{"line_number":6035,"context_line":"            host_statuses[instance.uuid] \u003d host_status"},{"line_number":6036,"context_line":"        return host_statuses"},{"line_number":6037,"context_line":""},{"line_number":6038,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":6039,"context_line":"        self.compute_rpcapi.mount_share("},{"line_number":6040,"context_line":"            context, instance, share_mapping)"},{"line_number":6041,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"c844b2c2_9c537dcb","line":6038,"in_reply_to":"2e08b81b_b216f72f","updated":"2024-06-04 13:43:33.000000000","message":"Given what we are actully doing as a sideefect of the rpc this is more like exporting/exposing the share to the given host so im framing allow in that context but in general i find allow/deny as slightly odd.\n\nallow is not quite what i would expect but its better than mount.\n\nI still prefer attach but allow is acceptable although expose and revoke is effectively the operation that is being done but we dont really use that terminology in nova today.","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"28ba1372f56fd76cc8d1d363328df809cbc6519b","unresolved":true,"context_lines":[{"line_number":6035,"context_line":"            host_statuses[instance.uuid] \u003d host_status"},{"line_number":6036,"context_line":"        return host_statuses"},{"line_number":6037,"context_line":""},{"line_number":6038,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":6039,"context_line":"        self.compute_rpcapi.mount_share("},{"line_number":6040,"context_line":"            context, instance, share_mapping)"},{"line_number":6041,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"a2bfdf12_790f11b6","line":6038,"in_reply_to":"31130b84_5c71c8ca","updated":"2024-02-28 15:18:10.000000000","message":"Sorry I did the renaming before the comments (Friday 23). I\u0027m not opposed changing it if you think it is a more understandable name.","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f511a3ba277dc48e6418c9bbcbbf5b3cdb46aa48","unresolved":false,"context_lines":[{"line_number":6035,"context_line":"            host_statuses[instance.uuid] \u003d host_status"},{"line_number":6036,"context_line":"        return host_statuses"},{"line_number":6037,"context_line":""},{"line_number":6038,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":6039,"context_line":"        self.compute_rpcapi.mount_share("},{"line_number":6040,"context_line":"            context, instance, share_mapping)"},{"line_number":6041,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"45da4a4e_2b6018f7","line":6038,"in_reply_to":"39806d5b_4d9b8493","updated":"2024-06-13 14:08:05.000000000","message":"Done","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2b0c86adaae31b721bd7272e2e432564b4c9cf88","unresolved":true,"context_lines":[{"line_number":6035,"context_line":"            host_statuses[instance.uuid] \u003d host_status"},{"line_number":6036,"context_line":"        return host_statuses"},{"line_number":6037,"context_line":""},{"line_number":6038,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":6039,"context_line":"        self.compute_rpcapi.mount_share("},{"line_number":6040,"context_line":"            context, instance, share_mapping)"},{"line_number":6041,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"15d58058_a446170f","line":6038,"in_reply_to":"a2bfdf12_790f11b6","updated":"2024-05-22 15:01:37.000000000","message":"@Sean could you please check back to this conversation. I see an unresolved conversation here about the RPC naming.","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":true,"context_lines":[{"line_number":6035,"context_line":"            host_statuses[instance.uuid] \u003d host_status"},{"line_number":6036,"context_line":"        return host_statuses"},{"line_number":6037,"context_line":""},{"line_number":6038,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":6039,"context_line":"        self.compute_rpcapi.mount_share("},{"line_number":6040,"context_line":"            context, instance, share_mapping)"},{"line_number":6041,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"31130b84_5c71c8ca","line":6038,"in_reply_to":"c41428a9_42dd848d","updated":"2024-02-28 13:13:31.000000000","message":"hm, we are not really attaching or mounting any more in this RPC, we only talking to manila to export the share to the compute. I see that Rene renamed it to allow_share in the latest PS. @Sean, do you suggest attach as a name to prepare for the case when live attach will be implemented via this RPC in the future?","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"73cb6b04a4673762024b38ec0a1d7fa001a9dbc5","unresolved":true,"context_lines":[{"line_number":6035,"context_line":"            host_statuses[instance.uuid] \u003d host_status"},{"line_number":6036,"context_line":"        return host_statuses"},{"line_number":6037,"context_line":""},{"line_number":6038,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":6039,"context_line":"        self.compute_rpcapi.mount_share("},{"line_number":6040,"context_line":"            context, instance, share_mapping)"},{"line_number":6041,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"39806d5b_4d9b8493","line":6038,"in_reply_to":"c844b2c2_9c537dcb","updated":"2024-06-12 14:58:49.000000000","message":"we could say `add_share_to_instance()` but meh.","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f9a9ee6245aa579e214200c360489c9c7e405061","unresolved":true,"context_lines":[{"line_number":6039,"context_line":"        self.compute_rpcapi.mount_share("},{"line_number":6040,"context_line":"            context, instance, share_mapping)"},{"line_number":6041,"context_line":""},{"line_number":6042,"context_line":"    def umount_share(self, context, instance, share_mapping):"},{"line_number":6043,"context_line":"        self.compute_rpcapi.umount_share("},{"line_number":6044,"context_line":"            context, instance, share_mapping)"},{"line_number":6045,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"8a30612d_36803643","line":6042,"updated":"2024-02-25 22:49:43.000000000","message":"and this would be detach_share","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f511a3ba277dc48e6418c9bbcbbf5b3cdb46aa48","unresolved":false,"context_lines":[{"line_number":6039,"context_line":"        self.compute_rpcapi.mount_share("},{"line_number":6040,"context_line":"            context, instance, share_mapping)"},{"line_number":6041,"context_line":""},{"line_number":6042,"context_line":"    def umount_share(self, context, instance, share_mapping):"},{"line_number":6043,"context_line":"        self.compute_rpcapi.umount_share("},{"line_number":6044,"context_line":"            context, instance, share_mapping)"},{"line_number":6045,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"68de1d5f_4f46a2f3","line":6042,"in_reply_to":"8a30612d_36803643","updated":"2024-06-13 14:08:05.000000000","message":"Done","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"}],"nova/compute/manager.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":2953,"context_line":"        \"\"\"Power off an instance on this host.\"\"\""},{"line_number":2954,"context_line":"        timeout, retry_interval \u003d self._get_power_off_values("},{"line_number":2955,"context_line":"            instance, clean_shutdown)"},{"line_number":2956,"context_line":"        self.driver.power_off(context, instance, timeout, retry_interval,"},{"line_number":2957,"context_line":"                share_info)"},{"line_number":2958,"context_line":""},{"line_number":2959,"context_line":"    def _shutdown_instance(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":12,"id":"bcb582aa_64ec8284","line":2956,"updated":"2022-08-26 10:26:41.000000000","message":"this can raise share mount error and it is called not just from stop_instance but from many other places","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"6aa44d7538b4d5d6ad21778525b876790309e0f5","unresolved":false,"context_lines":[{"line_number":2953,"context_line":"        \"\"\"Power off an instance on this host.\"\"\""},{"line_number":2954,"context_line":"        timeout, retry_interval \u003d self._get_power_off_values("},{"line_number":2955,"context_line":"            instance, clean_shutdown)"},{"line_number":2956,"context_line":"        self.driver.power_off(context, instance, timeout, retry_interval,"},{"line_number":2957,"context_line":"                share_info)"},{"line_number":2958,"context_line":""},{"line_number":2959,"context_line":"    def _shutdown_instance(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9e4014d7_b0cb81ef","line":2956,"in_reply_to":"bcb582aa_64ec8284","updated":"2022-10-05 08:36:37.000000000","message":"Mount and umount have been moved to share_mapping create/delete.\nAs a result power off does not have to unmount share anymore.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":3212,"context_line":"    @wrap_instance_fault"},{"line_number":3213,"context_line":"    def stop_instance(self, context, instance, clean_shutdown):"},{"line_number":3214,"context_line":"        \"\"\"Stopping an instance on this host.\"\"\""},{"line_number":3215,"context_line":"        def set_instance_state_to_stopped(instance, expected_task_state):"},{"line_number":3216,"context_line":"            instance.power_state \u003d self._get_power_state(instance)"},{"line_number":3217,"context_line":"            instance.vm_state \u003d vm_states.STOPPED"},{"line_number":3218,"context_line":"            instance.task_state \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"c078cb44_950aeb27","line":3215,"updated":"2022-08-26 10:26:41.000000000","message":"Please add at least an empty line between the doc and the nested function def. Also I\u0027m not a fan of this kind of nested functions as it hinders readability for the top level function by breaking the sequence. I.e. I spent a bit of time figuring out that yes, this will still run under the instance.uuid lock so it is safe.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"11108d787970607ec6a2164842a5d0080116fa14","unresolved":false,"context_lines":[{"line_number":3212,"context_line":"    @wrap_instance_fault"},{"line_number":3213,"context_line":"    def stop_instance(self, context, instance, clean_shutdown):"},{"line_number":3214,"context_line":"        \"\"\"Stopping an instance on this host.\"\"\""},{"line_number":3215,"context_line":"        def set_instance_state_to_stopped(instance, expected_task_state):"},{"line_number":3216,"context_line":"            instance.power_state \u003d self._get_power_state(instance)"},{"line_number":3217,"context_line":"            instance.vm_state \u003d vm_states.STOPPED"},{"line_number":3218,"context_line":"            instance.task_state \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"ce2bda54_e1b2eb1a","line":3215,"in_reply_to":"3bfae4f2_9eb03d2e","updated":"2022-09-01 09:41:34.000000000","message":"It becomes a closure if you start relying on some variable from the outer scope. But as far as I see this nested function gets all its input via passed in parameters.\n\nI think a good rule of thumb is that if the closure can be a lambda then that is OK as it is small. \n\nNova hase a pattern here in the compute manager to do the locking in nested functions with a decorator. But note that in most of these cases the actual logic under the lock is actually moved to a top level function (not here apparently).","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":false,"context_lines":[{"line_number":3212,"context_line":"    @wrap_instance_fault"},{"line_number":3213,"context_line":"    def stop_instance(self, context, instance, clean_shutdown):"},{"line_number":3214,"context_line":"        \"\"\"Stopping an instance on this host.\"\"\""},{"line_number":3215,"context_line":"        def set_instance_state_to_stopped(instance, expected_task_state):"},{"line_number":3216,"context_line":"            instance.power_state \u003d self._get_power_state(instance)"},{"line_number":3217,"context_line":"            instance.vm_state \u003d vm_states.STOPPED"},{"line_number":3218,"context_line":"            instance.task_state \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"3bfae4f2_9eb03d2e","line":3215,"in_reply_to":"c078cb44_950aeb27","updated":"2022-08-31 14:51:42.000000000","message":"If I\u0027m not wrong that\u0027s a python closure. I\u0027have seen them used elsewhere.\nAnyway I keep in mind you don\u0027t like this too much. So am I, despite it could be be convenient.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":3264,"context_line":"                # In this case we should stop the instance despite the error"},{"line_number":3265,"context_line":"                # to not be stuck with the instance on that will prevent to"},{"line_number":3266,"context_line":"                # remove the share and fix the error."},{"line_number":3267,"context_line":"                set_instance_state_to_stopped(instance, expected_task_state)"},{"line_number":3268,"context_line":"                # TODO(uggla) add error notification"},{"line_number":3269,"context_line":""},{"line_number":3270,"context_line":"            self._notify_about_instance_usage(context, instance,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3da60285_c1829378","line":3267,"updated":"2022-08-26 10:26:41.000000000","message":"In general if you catch an exception and does not re-raise it or raise a different one then please LOG what happened otherwise it is pretty hard to troubleshoot why a share is not unmounted.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"6aa44d7538b4d5d6ad21778525b876790309e0f5","unresolved":false,"context_lines":[{"line_number":3264,"context_line":"                # In this case we should stop the instance despite the error"},{"line_number":3265,"context_line":"                # to not be stuck with the instance on that will prevent to"},{"line_number":3266,"context_line":"                # remove the share and fix the error."},{"line_number":3267,"context_line":"                set_instance_state_to_stopped(instance, expected_task_state)"},{"line_number":3268,"context_line":"                # TODO(uggla) add error notification"},{"line_number":3269,"context_line":""},{"line_number":3270,"context_line":"            self._notify_about_instance_usage(context, instance,"}],"source_content_type":"text/x-python","patch_set":12,"id":"821236c1_5f7d07b4","line":3267,"in_reply_to":"3da60285_c1829378","updated":"2022-10-05 08:36:37.000000000","message":"Done","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"6aa44d7538b4d5d6ad21778525b876790309e0f5","unresolved":false,"context_lines":[{"line_number":3264,"context_line":"                # In this case we should stop the instance despite the error"},{"line_number":3265,"context_line":"                # to not be stuck with the instance on that will prevent to"},{"line_number":3266,"context_line":"                # remove the share and fix the error."},{"line_number":3267,"context_line":"                set_instance_state_to_stopped(instance, expected_task_state)"},{"line_number":3268,"context_line":"                # TODO(uggla) add error notification"},{"line_number":3269,"context_line":""},{"line_number":3270,"context_line":"            self._notify_about_instance_usage(context, instance,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ac0774b8_ab18f00e","line":3267,"in_reply_to":"3da60285_c1829378","updated":"2022-10-05 08:36:37.000000000","message":"Done","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":3289,"context_line":""},{"line_number":3290,"context_line":"        self.driver.power_on(context, instance,"},{"line_number":3291,"context_line":"                             network_info,"},{"line_number":3292,"context_line":"                             block_device_info, accel_info, share_info)"},{"line_number":3293,"context_line":""},{"line_number":3294,"context_line":"    def _delete_snapshot_of_shelved_instance(self, context, instance,"},{"line_number":3295,"context_line":"                                             snapshot_id):"}],"source_content_type":"text/x-python","patch_set":12,"id":"4383d442_01ae11e3","line":3292,"updated":"2022-08-26 10:26:41.000000000","message":"what if mounting fails? I see that you handle that in start_instance but _power_on is also called in restore_instance","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"6aa44d7538b4d5d6ad21778525b876790309e0f5","unresolved":false,"context_lines":[{"line_number":3289,"context_line":""},{"line_number":3290,"context_line":"        self.driver.power_on(context, instance,"},{"line_number":3291,"context_line":"                             network_info,"},{"line_number":3292,"context_line":"                             block_device_info, accel_info, share_info)"},{"line_number":3293,"context_line":""},{"line_number":3294,"context_line":"    def _delete_snapshot_of_shelved_instance(self, context, instance,"},{"line_number":3295,"context_line":"                                             snapshot_id):"}],"source_content_type":"text/x-python","patch_set":12,"id":"5508366d_a07e808b","line":3292,"in_reply_to":"4383d442_01ae11e3","updated":"2022-10-05 08:36:37.000000000","message":"Done","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":3343,"context_line":"        except exception.ShareMountError:"},{"line_number":3344,"context_line":"            instance.vm_state \u003d vm_states.ERROR"},{"line_number":3345,"context_line":"            instance.task_state \u003d None"},{"line_number":3346,"context_line":"            instance.save()"},{"line_number":3347,"context_line":""},{"line_number":3348,"context_line":"    @messaging.expected_exceptions(NotImplementedError,"},{"line_number":3349,"context_line":"                                   exception.TriggerCrashDumpNotSupported,"}],"source_content_type":"text/x-python","patch_set":12,"id":"320b7ac4_cd32665d","line":3346,"updated":"2022-08-26 10:26:41.000000000","message":"we have a helper for that: _set_instance_obj_error_state","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":false,"context_lines":[{"line_number":3343,"context_line":"        except exception.ShareMountError:"},{"line_number":3344,"context_line":"            instance.vm_state \u003d vm_states.ERROR"},{"line_number":3345,"context_line":"            instance.task_state \u003d None"},{"line_number":3346,"context_line":"            instance.save()"},{"line_number":3347,"context_line":""},{"line_number":3348,"context_line":"    @messaging.expected_exceptions(NotImplementedError,"},{"line_number":3349,"context_line":"                                   exception.TriggerCrashDumpNotSupported,"}],"source_content_type":"text/x-python","patch_set":12,"id":"cb6b89cf_feb7b442","line":3346,"in_reply_to":"320b7ac4_cd32665d","updated":"2022-08-31 14:51:42.000000000","message":"Done","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":3384,"context_line":"            except NotImplementedError:"},{"line_number":3385,"context_line":"                # Fallback to just powering off the instance if the"},{"line_number":3386,"context_line":"                # hypervisor doesn\u0027t implement the soft_delete method"},{"line_number":3387,"context_line":"                self.driver.power_off(context, instance)"},{"line_number":3388,"context_line":"            instance.power_state \u003d self._get_power_state(instance)"},{"line_number":3389,"context_line":"            instance.vm_state \u003d vm_states.SOFT_DELETED"},{"line_number":3390,"context_line":"            instance.task_state \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff66089f_486001a7","line":3387,"updated":"2022-08-26 10:26:41.000000000","message":"I think we need to unmount the share during this power_off too","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"6aa44d7538b4d5d6ad21778525b876790309e0f5","unresolved":false,"context_lines":[{"line_number":3384,"context_line":"            except NotImplementedError:"},{"line_number":3385,"context_line":"                # Fallback to just powering off the instance if the"},{"line_number":3386,"context_line":"                # hypervisor doesn\u0027t implement the soft_delete method"},{"line_number":3387,"context_line":"                self.driver.power_off(context, instance)"},{"line_number":3388,"context_line":"            instance.power_state \u003d self._get_power_state(instance)"},{"line_number":3389,"context_line":"            instance.vm_state \u003d vm_states.SOFT_DELETED"},{"line_number":3390,"context_line":"            instance.task_state \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"b1c8c0c2_c2386c65","line":3387,"in_reply_to":"ff66089f_486001a7","updated":"2022-10-05 08:36:37.000000000","message":"Mount and umount have been moved to share_mapping create/delete.\nAs a result power off does not have to unmount share anymore.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":3405,"context_line":"        except NotImplementedError:"},{"line_number":3406,"context_line":"            # Fallback to just powering on the instance if the hypervisor"},{"line_number":3407,"context_line":"            # doesn\u0027t implement the restore method"},{"line_number":3408,"context_line":"            self._power_on(context, instance)"},{"line_number":3409,"context_line":"        instance.power_state \u003d self._get_power_state(instance)"},{"line_number":3410,"context_line":"        instance.vm_state \u003d vm_states.ACTIVE"},{"line_number":3411,"context_line":"        instance.task_state \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"99ed1b88_112c2f06","line":3408,"updated":"2022-08-26 10:26:41.000000000","message":"this could rasise share mount error","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"6aa44d7538b4d5d6ad21778525b876790309e0f5","unresolved":false,"context_lines":[{"line_number":3405,"context_line":"        except NotImplementedError:"},{"line_number":3406,"context_line":"            # Fallback to just powering on the instance if the hypervisor"},{"line_number":3407,"context_line":"            # doesn\u0027t implement the restore method"},{"line_number":3408,"context_line":"            self._power_on(context, instance)"},{"line_number":3409,"context_line":"        instance.power_state \u003d self._get_power_state(instance)"},{"line_number":3410,"context_line":"        instance.vm_state \u003d vm_states.ACTIVE"},{"line_number":3411,"context_line":"        instance.task_state \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"c63d682d_92eb04b8","line":3408,"in_reply_to":"99ed1b88_112c2f06","updated":"2022-10-05 08:36:37.000000000","message":"Mount and umount have been moved to share_mapping create/delete.\nAs a result power on does not have to mount share anymore.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":3452,"context_line":"                        instance_uuid\u003dinstance.uuid, reason\u003dmsg)"},{"line_number":3453,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":3454,"context_line":"        else:"},{"line_number":3455,"context_line":"            self._power_off_instance(context, instance, clean_shutdown\u003dTrue)"},{"line_number":3456,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":3457,"context_line":"            self.driver.destroy(context, instance,"},{"line_number":3458,"context_line":"                                network_info\u003dnetwork_info,"}],"source_content_type":"text/x-python","patch_set":12,"id":"66497da1_523e2e59","line":3455,"updated":"2022-08-26 10:26:41.000000000","message":"hm, we probably need to do an unmount for rebuild. Or does driver.destroy will unmount too?","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"6aa44d7538b4d5d6ad21778525b876790309e0f5","unresolved":false,"context_lines":[{"line_number":3452,"context_line":"                        instance_uuid\u003dinstance.uuid, reason\u003dmsg)"},{"line_number":3453,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":3454,"context_line":"        else:"},{"line_number":3455,"context_line":"            self._power_off_instance(context, instance, clean_shutdown\u003dTrue)"},{"line_number":3456,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":3457,"context_line":"            self.driver.destroy(context, instance,"},{"line_number":3458,"context_line":"                                network_info\u003dnetwork_info,"}],"source_content_type":"text/x-python","patch_set":12,"id":"a9ff4eb0_3d8a4552","line":3455,"in_reply_to":"66497da1_523e2e59","updated":"2022-10-05 08:36:37.000000000","message":"Mount and umount have been moved to share_mapping create/delete.\nAs a result power off does not have to unmount share anymore.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":3901,"context_line":""},{"line_number":3902,"context_line":"        share_info \u003d objects.ShareMappingList.get_by_instance_uuid("},{"line_number":3903,"context_line":"            context, instance.uuid)"},{"line_number":3904,"context_line":"        # Filter shares with \u0027attached\u0027, \u0027detached\u0027 or \u0027error\u0027 status."},{"line_number":3905,"context_line":"        share_info \u003d ["},{"line_number":3906,"context_line":"            share for share in share_info if"},{"line_number":3907,"context_line":"            (share.status \u003d\u003d \u0027active\u0027 or"}],"source_content_type":"text/x-python","patch_set":12,"id":"a3a46589_4e0a60a6","line":3904,"updated":"2022-08-26 10:26:41.000000000","message":"Why? what else could be the status? (also these are now called active, inactive)","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":false,"context_lines":[{"line_number":3901,"context_line":""},{"line_number":3902,"context_line":"        share_info \u003d objects.ShareMappingList.get_by_instance_uuid("},{"line_number":3903,"context_line":"            context, instance.uuid)"},{"line_number":3904,"context_line":"        # Filter shares with \u0027attached\u0027, \u0027detached\u0027 or \u0027error\u0027 status."},{"line_number":3905,"context_line":"        share_info \u003d ["},{"line_number":3906,"context_line":"            share for share in share_info if"},{"line_number":3907,"context_line":"            (share.status \u003d\u003d \u0027active\u0027 or"}],"source_content_type":"text/x-python","patch_set":12,"id":"02a27d48_29bfb0f4","line":3904,"in_reply_to":"a3a46589_4e0a60a6","updated":"2022-08-31 14:51:42.000000000","message":"Done","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":3904,"context_line":"        # Filter shares with \u0027attached\u0027, \u0027detached\u0027 or \u0027error\u0027 status."},{"line_number":3905,"context_line":"        share_info \u003d ["},{"line_number":3906,"context_line":"            share for share in share_info if"},{"line_number":3907,"context_line":"            (share.status \u003d\u003d \u0027active\u0027 or"},{"line_number":3908,"context_line":"             share.status \u003d\u003d \u0027inactive\u0027 or"},{"line_number":3909,"context_line":"             share.status \u003d\u003d \u0027error\u0027)]"},{"line_number":3910,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"cda885fa_d9f900ae","line":3907,"updated":"2022-08-26 10:26:41.000000000","message":"you have enum values for these now","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":false,"context_lines":[{"line_number":3904,"context_line":"        # Filter shares with \u0027attached\u0027, \u0027detached\u0027 or \u0027error\u0027 status."},{"line_number":3905,"context_line":"        share_info \u003d ["},{"line_number":3906,"context_line":"            share for share in share_info if"},{"line_number":3907,"context_line":"            (share.status \u003d\u003d \u0027active\u0027 or"},{"line_number":3908,"context_line":"             share.status \u003d\u003d \u0027inactive\u0027 or"},{"line_number":3909,"context_line":"             share.status \u003d\u003d \u0027error\u0027)]"},{"line_number":3910,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ca1c72b7_4760a2c8","line":3907,"in_reply_to":"cda885fa_d9f900ae","updated":"2022-08-31 14:51:42.000000000","message":"Done","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":10335,"context_line":"                             \"DELETED but still present on host.\","},{"line_number":10336,"context_line":"                             instance.name, instance\u003dinstance)"},{"line_number":10337,"context_line":"                    try:"},{"line_number":10338,"context_line":"                        self.driver.power_off(context, instance)"},{"line_number":10339,"context_line":"                    except Exception:"},{"line_number":10340,"context_line":"                        LOG.warning(\"Failed to power off instance\","},{"line_number":10341,"context_line":"                                    instance\u003dinstance, exc_info\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7686b4ff_fb4a6063","line":10338,"updated":"2022-08-26 10:26:41.000000000","message":"you probably want to unmount here too","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"6aa44d7538b4d5d6ad21778525b876790309e0f5","unresolved":false,"context_lines":[{"line_number":10335,"context_line":"                             \"DELETED but still present on host.\","},{"line_number":10336,"context_line":"                             instance.name, instance\u003dinstance)"},{"line_number":10337,"context_line":"                    try:"},{"line_number":10338,"context_line":"                        self.driver.power_off(context, instance)"},{"line_number":10339,"context_line":"                    except Exception:"},{"line_number":10340,"context_line":"                        LOG.warning(\"Failed to power off instance\","},{"line_number":10341,"context_line":"                                    instance\u003dinstance, exc_info\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"986364d7_6236d56e","line":10338,"in_reply_to":"7686b4ff_fb4a6063","updated":"2022-10-05 08:36:37.000000000","message":"Mount and umount have been moved to share_mapping create/delete.\nAs a result power off does not have to unmount share anymore.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"11108d787970607ec6a2164842a5d0080116fa14","unresolved":true,"context_lines":[{"line_number":3900,"context_line":""},{"line_number":3901,"context_line":"        share_info \u003d objects.ShareMappingList.get_by_instance_uuid("},{"line_number":3902,"context_line":"            context, instance.uuid)"},{"line_number":3903,"context_line":"        share_info \u003d [share for share in share_info]"},{"line_number":3904,"context_line":"        return share_info"},{"line_number":3905,"context_line":""},{"line_number":3906,"context_line":"    @wrap_exception()"}],"source_content_type":"text/x-python","patch_set":16,"id":"b8e9d44f_8bf6f850","line":3903,"updated":"2022-09-01 09:41:34.000000000","message":"This is now a shallow copy of share_info.  Do you need a copy of share_info could be returned directly? If you need the shallow copy then you can make that explicit by doing copy.copy(share_info)","commit_id":"930406e4bfa8bbff11422a6f5227829cac53890b"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"233b811f8a15e3e9ef503548927b52520fa0149f","unresolved":false,"context_lines":[{"line_number":3900,"context_line":""},{"line_number":3901,"context_line":"        share_info \u003d objects.ShareMappingList.get_by_instance_uuid("},{"line_number":3902,"context_line":"            context, instance.uuid)"},{"line_number":3903,"context_line":"        share_info \u003d [share for share in share_info]"},{"line_number":3904,"context_line":"        return share_info"},{"line_number":3905,"context_line":""},{"line_number":3906,"context_line":"    @wrap_exception()"}],"source_content_type":"text/x-python","patch_set":16,"id":"c988784b_52a922c9","line":3903,"in_reply_to":"b8e9d44f_8bf6f850","updated":"2022-09-14 07:48:26.000000000","message":"I\u0027m now returning a ShareMappingList instead of a regular list.\nIt is better and it will allow to remove the loops in the code as suggested.","commit_id":"930406e4bfa8bbff11422a6f5227829cac53890b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4128183b24798390366366d6652a359ddd699197","unresolved":true,"context_lines":[{"line_number":4259,"context_line":"                )"},{"line_number":4260,"context_line":"            else:"},{"line_number":4261,"context_line":"                share_mappings.append("},{"line_number":4262,"context_line":"                    objects.base.obj_to_primitive(share_mapping))"},{"line_number":4263,"context_line":""},{"line_number":4264,"context_line":"        share_info \u003d objects.base.obj_make_list("},{"line_number":4265,"context_line":"            context,"},{"line_number":4266,"context_line":"            objects.ShareMappingList(context),"},{"line_number":4267,"context_line":"            objects.ShareMapping,"}],"source_content_type":"text/x-python","patch_set":38,"id":"b41e677b_60f0f271","line":4264,"range":{"start_line":4262,"start_character":0,"end_line":4264,"end_character":48},"updated":"2023-11-15 16:43:51.000000000","message":"Why does it converts to primitives then back to a object? You can work with objects:\n```\nshare_info\u003dobjects.ShareMappingList(context)\n# do the filtering and if you found one to add then\nshare_info.objects.append(share_mapping)\n# ...\nreturn share_info\n```","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"50ecf68bb5f80ee95e7e01cbe03eda785f0d3e25","unresolved":false,"context_lines":[{"line_number":4259,"context_line":"                )"},{"line_number":4260,"context_line":"            else:"},{"line_number":4261,"context_line":"                share_mappings.append("},{"line_number":4262,"context_line":"                    objects.base.obj_to_primitive(share_mapping))"},{"line_number":4263,"context_line":""},{"line_number":4264,"context_line":"        share_info \u003d objects.base.obj_make_list("},{"line_number":4265,"context_line":"            context,"},{"line_number":4266,"context_line":"            objects.ShareMappingList(context),"},{"line_number":4267,"context_line":"            objects.ShareMapping,"}],"source_content_type":"text/x-python","patch_set":38,"id":"c0e88d07_5eb01505","line":4264,"range":{"start_line":4262,"start_character":0,"end_line":4264,"end_character":48},"in_reply_to":"57da4c8e_aa3d0ad6","updated":"2024-01-29 18:18:36.000000000","message":"Done","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9f26bffd50e81c66c907365852c62ba2768e4719","unresolved":true,"context_lines":[{"line_number":4259,"context_line":"                )"},{"line_number":4260,"context_line":"            else:"},{"line_number":4261,"context_line":"                share_mappings.append("},{"line_number":4262,"context_line":"                    objects.base.obj_to_primitive(share_mapping))"},{"line_number":4263,"context_line":""},{"line_number":4264,"context_line":"        share_info \u003d objects.base.obj_make_list("},{"line_number":4265,"context_line":"            context,"},{"line_number":4266,"context_line":"            objects.ShareMappingList(context),"},{"line_number":4267,"context_line":"            objects.ShareMapping,"}],"source_content_type":"text/x-python","patch_set":38,"id":"57da4c8e_aa3d0ad6","line":4264,"range":{"start_line":4262,"start_character":0,"end_line":4264,"end_character":48},"in_reply_to":"b41e677b_60f0f271","updated":"2024-01-22 17:09:44.000000000","message":"I think I did not find the objects.append() method and though we had to use obj_make_list() that required a dict.\n\nThanks for pointing me to the method.","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4128183b24798390366366d6652a359ddd699197","unresolved":true,"context_lines":[{"line_number":4545,"context_line":""},{"line_number":4546,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4547,"context_line":"        def _mount_share(context, instance, share_mapping):"},{"line_number":4548,"context_line":"            compute_ip \u003d CONF.my_block_storage_ip"},{"line_number":4549,"context_line":"            max_retries \u003d CONF.manila.action_timeout"},{"line_number":4550,"context_line":"            attempt_count \u003d 0"},{"line_number":4551,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"a2025b8c_e96285a1","line":4548,"updated":"2023-11-15 16:43:51.000000000","message":"Is it intentional that we are mixing file storage and block storage here? I are we OK to reuse the block storage IP for manila file storage implementations? Or in other words. Can we assume that both cinder and manila exposes its backend on the same network and therefore we can use the same interface / IP to connect to those backends?","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9f26bffd50e81c66c907365852c62ba2768e4719","unresolved":true,"context_lines":[{"line_number":4545,"context_line":""},{"line_number":4546,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4547,"context_line":"        def _mount_share(context, instance, share_mapping):"},{"line_number":4548,"context_line":"            compute_ip \u003d CONF.my_block_storage_ip"},{"line_number":4549,"context_line":"            max_retries \u003d CONF.manila.action_timeout"},{"line_number":4550,"context_line":"            attempt_count \u003d 0"},{"line_number":4551,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"e0c4f68a_3585e541","line":4548,"in_reply_to":"a2025b8c_e96285a1","updated":"2024-01-22 17:09:44.000000000","message":"We discussed that point at the beginning and this was proposed by Sean.\nBtw I think it is reasonable  to think that cinder and manila exposes its backend on the same network.\nBut that\u0027s no big deal if you want a specific parameter for this.","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eecacfcdf5689068ae369e1c566e4527e0e7f40a","unresolved":false,"context_lines":[{"line_number":4545,"context_line":""},{"line_number":4546,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4547,"context_line":"        def _mount_share(context, instance, share_mapping):"},{"line_number":4548,"context_line":"            compute_ip \u003d CONF.my_block_storage_ip"},{"line_number":4549,"context_line":"            max_retries \u003d CONF.manila.action_timeout"},{"line_number":4550,"context_line":"            attempt_count \u003d 0"},{"line_number":4551,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"9a755fd0_3952479a","line":4548,"in_reply_to":"ddea3c57_cdb8b8da","updated":"2024-06-03 14:42:27.000000000","message":"Introduce a new CONF parameter my_shared_fs_storage_ip","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"50ecf68bb5f80ee95e7e01cbe03eda785f0d3e25","unresolved":true,"context_lines":[{"line_number":4545,"context_line":""},{"line_number":4546,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4547,"context_line":"        def _mount_share(context, instance, share_mapping):"},{"line_number":4548,"context_line":"            compute_ip \u003d CONF.my_block_storage_ip"},{"line_number":4549,"context_line":"            max_retries \u003d CONF.manila.action_timeout"},{"line_number":4550,"context_line":"            attempt_count \u003d 0"},{"line_number":4551,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"ddea3c57_cdb8b8da","line":4548,"in_reply_to":"e0c4f68a_3585e541","updated":"2024-01-29 18:18:36.000000000","message":"@Sylvain @Sean, if you are OK with this then I\u0027m OK too.","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4128183b24798390366366d6652a359ddd699197","unresolved":true,"context_lines":[{"line_number":4546,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4547,"context_line":"        def _mount_share(context, instance, share_mapping):"},{"line_number":4548,"context_line":"            compute_ip \u003d CONF.my_block_storage_ip"},{"line_number":4549,"context_line":"            max_retries \u003d CONF.manila.action_timeout"},{"line_number":4550,"context_line":"            attempt_count \u003d 0"},{"line_number":4551,"context_line":""},{"line_number":4552,"context_line":"            def check_access():"},{"line_number":4553,"context_line":"                access \u003d self.manila_api.get_access("}],"source_content_type":"text/x-python","patch_set":38,"id":"6dd6eda6_30b3571a","line":4550,"range":{"start_line":4549,"start_character":0,"end_line":4550,"end_character":29},"updated":"2023-11-15 16:43:51.000000000","message":"I would move this top of the while loop where it is first used to help readability","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9f26bffd50e81c66c907365852c62ba2768e4719","unresolved":false,"context_lines":[{"line_number":4546,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4547,"context_line":"        def _mount_share(context, instance, share_mapping):"},{"line_number":4548,"context_line":"            compute_ip \u003d CONF.my_block_storage_ip"},{"line_number":4549,"context_line":"            max_retries \u003d CONF.manila.action_timeout"},{"line_number":4550,"context_line":"            attempt_count \u003d 0"},{"line_number":4551,"context_line":""},{"line_number":4552,"context_line":"            def check_access():"},{"line_number":4553,"context_line":"                access \u003d self.manila_api.get_access("}],"source_content_type":"text/x-python","patch_set":38,"id":"398d9ddb_86a3826c","line":4550,"range":{"start_line":4549,"start_character":0,"end_line":4550,"end_character":29},"in_reply_to":"6dd6eda6_30b3571a","updated":"2024-01-22 17:09:44.000000000","message":"Done","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4128183b24798390366366d6652a359ddd699197","unresolved":true,"context_lines":[{"line_number":4560,"context_line":"                    return True"},{"line_number":4561,"context_line":"                return False"},{"line_number":4562,"context_line":""},{"line_number":4563,"context_line":"            if not check_access():"},{"line_number":4564,"context_line":"                self.manila_api.allow("},{"line_number":4565,"context_line":"                    share_mapping.share_id,"},{"line_number":4566,"context_line":"                    \u0027ip\u0027,"},{"line_number":4567,"context_line":"                    compute_ip,"},{"line_number":4568,"context_line":"                    \u0027rw\u0027"},{"line_number":4569,"context_line":"                )"},{"line_number":4570,"context_line":""},{"line_number":4571,"context_line":"                # Ensure the share policy is updated, this will avoid"},{"line_number":4572,"context_line":"                # a race condition mounting the share if it is not the case."}],"source_content_type":"text/x-python","patch_set":38,"id":"ab5c0270_de5f50c4","line":4569,"range":{"start_line":4563,"start_character":0,"end_line":4569,"end_character":17},"updated":"2023-11-15 16:43:51.000000000","message":"you don\u0027t need this as a separate call. The loop below will do it for you (you just need to add 1 to the max_retries to account for the first request). This way you can simplify the code and reduce the indentation level as well","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"50ecf68bb5f80ee95e7e01cbe03eda785f0d3e25","unresolved":true,"context_lines":[{"line_number":4560,"context_line":"                    return True"},{"line_number":4561,"context_line":"                return False"},{"line_number":4562,"context_line":""},{"line_number":4563,"context_line":"            if not check_access():"},{"line_number":4564,"context_line":"                self.manila_api.allow("},{"line_number":4565,"context_line":"                    share_mapping.share_id,"},{"line_number":4566,"context_line":"                    \u0027ip\u0027,"},{"line_number":4567,"context_line":"                    compute_ip,"},{"line_number":4568,"context_line":"                    \u0027rw\u0027"},{"line_number":4569,"context_line":"                )"},{"line_number":4570,"context_line":""},{"line_number":4571,"context_line":"                # Ensure the share policy is updated, this will avoid"},{"line_number":4572,"context_line":"                # a race condition mounting the share if it is not the case."}],"source_content_type":"text/x-python","patch_set":38,"id":"73be7f9f_adb7efe5","line":4569,"range":{"start_line":4563,"start_character":0,"end_line":4569,"end_character":17},"in_reply_to":"1295afa3_5fab9844","updated":"2024-01-29 18:18:36.000000000","message":"I ended up with\n```\n            # one normal try + the amount of configured re-tries\n            max_tries \u003d 1 + CONF.manila.share_apply_policy_timeout\n            for attempt in range(max_tries):\n                if has_access():\n                    LOG.debug(\u0027Allow policy set on share %s \u0027,\n                              share_mapping.share_id)\n                    break\n\n                if attempt \u003d\u003d 0:\n                    # Explicitly locking the share is not needed as\n                    # create_access_rule() from the sdk will do it if the\n                    # restrict_visibility and restrict_deletion flags are\n                    # passed\n                    self.manila_api.allow(\n                        share_mapping.share_id,\n                        access_type,\n                        access_to,\n                        \u0027rw\u0027\n                    )\n\n                LOG.debug(\u0027%d/%d Waiting policy to be set on share %s \u0027,\n                          max_tries, attempt, share_mapping.share_id)\n                time.sleep(1)\n            else:\n                raise exception.ShareAccessGrantError(\n                    share_id\u003dshare_mapping.share_id,\n                    reason\u003d\"Failed to set allow policy on share, \"\n                           \"too many retries\",\n                )\n```\n\nI let you decide if you take it or keep it as is. I\u0027m OK both ways.","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"b2d722a666e620802a0ea333bc06d35e111d268f","unresolved":false,"context_lines":[{"line_number":4560,"context_line":"                    return True"},{"line_number":4561,"context_line":"                return False"},{"line_number":4562,"context_line":""},{"line_number":4563,"context_line":"            if not check_access():"},{"line_number":4564,"context_line":"                self.manila_api.allow("},{"line_number":4565,"context_line":"                    share_mapping.share_id,"},{"line_number":4566,"context_line":"                    \u0027ip\u0027,"},{"line_number":4567,"context_line":"                    compute_ip,"},{"line_number":4568,"context_line":"                    \u0027rw\u0027"},{"line_number":4569,"context_line":"                )"},{"line_number":4570,"context_line":""},{"line_number":4571,"context_line":"                # Ensure the share policy is updated, this will avoid"},{"line_number":4572,"context_line":"                # a race condition mounting the share if it is not the case."}],"source_content_type":"text/x-python","patch_set":38,"id":"05a241cf_d888aed0","line":4569,"range":{"start_line":4563,"start_character":0,"end_line":4569,"end_character":17},"in_reply_to":"73be7f9f_adb7efe5","updated":"2024-02-13 10:41:30.000000000","message":"This method drastically changed, so I think this comment is not relevant anymore.","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9f26bffd50e81c66c907365852c62ba2768e4719","unresolved":true,"context_lines":[{"line_number":4560,"context_line":"                    return True"},{"line_number":4561,"context_line":"                return False"},{"line_number":4562,"context_line":""},{"line_number":4563,"context_line":"            if not check_access():"},{"line_number":4564,"context_line":"                self.manila_api.allow("},{"line_number":4565,"context_line":"                    share_mapping.share_id,"},{"line_number":4566,"context_line":"                    \u0027ip\u0027,"},{"line_number":4567,"context_line":"                    compute_ip,"},{"line_number":4568,"context_line":"                    \u0027rw\u0027"},{"line_number":4569,"context_line":"                )"},{"line_number":4570,"context_line":""},{"line_number":4571,"context_line":"                # Ensure the share policy is updated, this will avoid"},{"line_number":4572,"context_line":"                # a race condition mounting the share if it is not the case."}],"source_content_type":"text/x-python","patch_set":38,"id":"1295afa3_5fab9844","line":4569,"range":{"start_line":4563,"start_character":0,"end_line":4569,"end_character":17},"in_reply_to":"ab5c0270_de5f50c4","updated":"2024-01-22 17:09:44.000000000","message":"I did it, it ends up with:\n            # Ensure the share policy is updated, this will avoid\n            # a race condition mounting the share if it is not the case.\n            max_retries \u003d CONF.manila.share_apply_policy_timeout + 1\n            attempt_count \u003d 0\n            while attempt_count \u003c max_retries:\n                if not check_access():\n                    if attempt_count \u003d\u003d 0:\n                        # self.manila_api.lock(share_mapping.share_id)\n                        # Explicitly locking the share is not needed as\n                        # create_access_rule() from the sdk will do it if the\n                        # restrict_visibility and restrict_deletion flags are\n                        # passed\n                        self.manila_api.allow(\n                            share_mapping.share_id,\n                            access_type,\n                            access_to,\n                            \u0027rw\u0027\n                        )\n                    else:\n                        LOG.debug(\u0027Waiting policy to be set on share %s \u0027,\n                                  share_mapping.share_id)\n                        time.sleep(1)\n                    attempt_count +\u003d 1\n                else:\n                    LOG.debug(\u0027Allow policy set on share %s \u0027,\n                              share_mapping.share_id)\n                    break\n\n            if attempt_count \u003e\u003d max_retries:\n                raise exception.ShareAccessGrantError(\n                    share_id\u003dshare_mapping.share_id,\n                    reason\u003d\"Failed to set allow policy on share, \"\n                    \"too many retries\",\n                )\n \nTBH, I\u0027m not convinced it is easier to read at least for me.\nI keep it unchanged for the moment but if you or someone else think it is better then I will do it.","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4128183b24798390366366d6652a359ddd699197","unresolved":true,"context_lines":[{"line_number":4570,"context_line":""},{"line_number":4571,"context_line":"                # Ensure the share policy is updated, this will avoid"},{"line_number":4572,"context_line":"                # a race condition mounting the share if it is not the case."},{"line_number":4573,"context_line":"                while attempt_count \u003c max_retries:"},{"line_number":4574,"context_line":"                    if check_access():"},{"line_number":4575,"context_line":"                        LOG.debug(\u0027Allow policy set on share %s \u0027,"},{"line_number":4576,"context_line":"                                  share_mapping.share_id)"}],"source_content_type":"text/x-python","patch_set":38,"id":"dbacbd49_b3807156","line":4573,"updated":"2023-11-15 16:43:51.000000000","message":"Personally I would move this retry loop to our manila client code as it is more related to the manila implementation itself than our compute manager implementation.","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9f26bffd50e81c66c907365852c62ba2768e4719","unresolved":false,"context_lines":[{"line_number":4570,"context_line":""},{"line_number":4571,"context_line":"                # Ensure the share policy is updated, this will avoid"},{"line_number":4572,"context_line":"                # a race condition mounting the share if it is not the case."},{"line_number":4573,"context_line":"                while attempt_count \u003c max_retries:"},{"line_number":4574,"context_line":"                    if check_access():"},{"line_number":4575,"context_line":"                        LOG.debug(\u0027Allow policy set on share %s \u0027,"},{"line_number":4576,"context_line":"                                  share_mapping.share_id)"}],"source_content_type":"text/x-python","patch_set":38,"id":"2fadc1fc_8f3d9299","line":4573,"in_reply_to":"dbacbd49_b3807156","updated":"2024-01-22 17:09:44.000000000","message":"Done","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"50ecf68bb5f80ee95e7e01cbe03eda785f0d3e25","unresolved":true,"context_lines":[{"line_number":4267,"context_line":"        for share_mapping in objects.ShareMappingList.get_by_instance_uuid("},{"line_number":4268,"context_line":"            context, instance.uuid"},{"line_number":4269,"context_line":"        ):"},{"line_number":4270,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ERROR:"},{"line_number":4271,"context_line":"                LOG.warning("},{"line_number":4272,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is in \""},{"line_number":4273,"context_line":"                    \"error state. So skipping it to avoid VM errors.\","},{"line_number":4274,"context_line":"                    share_mapping.share_id,"},{"line_number":4275,"context_line":"                    instance.id"},{"line_number":4276,"context_line":"                )"},{"line_number":4277,"context_line":"            else:"},{"line_number":4278,"context_line":"                share_info.objects.append(share_mapping)"},{"line_number":4279,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"a92b5914_69eaf207","line":4276,"range":{"start_line":4270,"start_character":0,"end_line":4276,"end_character":17},"updated":"2024-01-29 18:18:36.000000000","message":"I quickly scanned the spec but I don\u0027t find it if we discussed it in spec or not. But this behavior can be a source of confusion. In general Nova fails the create / start operation if some of the underlying resource of the VM is invalid. E.g. the volume cannot be attached, the port is cannot be bound or plugged. But shares will behave differently now. An unavailable share will simply be ignored. Personally I would prefer to be consistent here and fail on shares in ERROR. But if we have a good reason to differ here then please make this behavior described both in the REST API doc an the manage-shares doc.","commit_id":"7022edc782603f61ec657128ea061411b315a567"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eecacfcdf5689068ae369e1c566e4527e0e7f40a","unresolved":false,"context_lines":[{"line_number":4267,"context_line":"        for share_mapping in objects.ShareMappingList.get_by_instance_uuid("},{"line_number":4268,"context_line":"            context, instance.uuid"},{"line_number":4269,"context_line":"        ):"},{"line_number":4270,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ERROR:"},{"line_number":4271,"context_line":"                LOG.warning("},{"line_number":4272,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is in \""},{"line_number":4273,"context_line":"                    \"error state. So skipping it to avoid VM errors.\","},{"line_number":4274,"context_line":"                    share_mapping.share_id,"},{"line_number":4275,"context_line":"                    instance.id"},{"line_number":4276,"context_line":"                )"},{"line_number":4277,"context_line":"            else:"},{"line_number":4278,"context_line":"                share_info.objects.append(share_mapping)"},{"line_number":4279,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"f4ccbe1c_927a9461","line":4276,"range":{"start_line":4270,"start_character":0,"end_line":4276,"end_character":17},"in_reply_to":"2d649dcb_d02e1519","updated":"2024-06-03 14:42:27.000000000","message":"Done","commit_id":"7022edc782603f61ec657128ea061411b315a567"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"777ca2d191e2417ce32a011479b804fc3507b677","unresolved":true,"context_lines":[{"line_number":4267,"context_line":"        for share_mapping in objects.ShareMappingList.get_by_instance_uuid("},{"line_number":4268,"context_line":"            context, instance.uuid"},{"line_number":4269,"context_line":"        ):"},{"line_number":4270,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ERROR:"},{"line_number":4271,"context_line":"                LOG.warning("},{"line_number":4272,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is in \""},{"line_number":4273,"context_line":"                    \"error state. So skipping it to avoid VM errors.\","},{"line_number":4274,"context_line":"                    share_mapping.share_id,"},{"line_number":4275,"context_line":"                    instance.id"},{"line_number":4276,"context_line":"                )"},{"line_number":4277,"context_line":"            else:"},{"line_number":4278,"context_line":"                share_info.objects.append(share_mapping)"},{"line_number":4279,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"2d649dcb_d02e1519","line":4276,"range":{"start_line":4270,"start_character":0,"end_line":4276,"end_character":17},"in_reply_to":"a92b5914_69eaf207","updated":"2024-02-16 14:12:00.000000000","message":"This should be fixed.\nHowever I still need to amend the spec.","commit_id":"7022edc782603f61ec657128ea061411b315a567"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ea6af1ae4837f6178a228e11f069f07b83f2dd1e","unresolved":true,"context_lines":[{"line_number":4318,"context_line":"                        time.sleep(1)"},{"line_number":4319,"context_line":"                        attempt_count +\u003d 1"},{"line_number":4320,"context_line":""},{"line_number":4321,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ATTACHING:"},{"line_number":4322,"context_line":"                # If the share status is attaching it means we are racing with"},{"line_number":4323,"context_line":"                # the compute node. The mount is not completed yet or something"},{"line_number":4324,"context_line":"                # really bad happened. So we need to wait for a coherent status"},{"line_number":4325,"context_line":"                # or set the instance in error state."},{"line_number":4326,"context_line":"                LOG.warning("},{"line_number":4327,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is in \""},{"line_number":4328,"context_line":"                    \"attaching state. Waiting for compute node to finish.\","},{"line_number":4329,"context_line":"                    share_mapping.share_id,"},{"line_number":4330,"context_line":"                    instance.id"},{"line_number":4331,"context_line":"                )"},{"line_number":4332,"context_line":"                _wait_for_compute_node()"},{"line_number":4333,"context_line":""},{"line_number":4334,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ERROR:"},{"line_number":4335,"context_line":"                LOG.error("}],"source_content_type":"text/x-python","patch_set":41,"id":"0026f516_5b525e13","line":4332,"range":{"start_line":4321,"start_character":0,"end_line":4332,"end_character":40},"updated":"2024-02-13 14:54:54.000000000","message":"I would block this in the API during server start. Meaning if the user wants to start the instance while there are shares in ATTACHING state then simply reject the start request. The user can monitor the share state via the REST API and wait until the share is attached (mounted) on the compute.","commit_id":"352a90b26e0732d17f350e60a7b8b62d2dbe0949"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"777ca2d191e2417ce32a011479b804fc3507b677","unresolved":true,"context_lines":[{"line_number":4318,"context_line":"                        time.sleep(1)"},{"line_number":4319,"context_line":"                        attempt_count +\u003d 1"},{"line_number":4320,"context_line":""},{"line_number":4321,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ATTACHING:"},{"line_number":4322,"context_line":"                # If the share status is attaching it means we are racing with"},{"line_number":4323,"context_line":"                # the compute node. The mount is not completed yet or something"},{"line_number":4324,"context_line":"                # really bad happened. So we need to wait for a coherent status"},{"line_number":4325,"context_line":"                # or set the instance in error state."},{"line_number":4326,"context_line":"                LOG.warning("},{"line_number":4327,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is in \""},{"line_number":4328,"context_line":"                    \"attaching state. Waiting for compute node to finish.\","},{"line_number":4329,"context_line":"                    share_mapping.share_id,"},{"line_number":4330,"context_line":"                    instance.id"},{"line_number":4331,"context_line":"                )"},{"line_number":4332,"context_line":"                _wait_for_compute_node()"},{"line_number":4333,"context_line":""},{"line_number":4334,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ERROR:"},{"line_number":4335,"context_line":"                LOG.error("}],"source_content_type":"text/x-python","patch_set":41,"id":"2e3ebeb4_929b5777","line":4332,"range":{"start_line":4321,"start_character":0,"end_line":4332,"end_character":40},"in_reply_to":"0026f516_5b525e13","updated":"2024-02-16 14:12:00.000000000","message":"I remove that part.","commit_id":"352a90b26e0732d17f350e60a7b8b62d2dbe0949"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eecacfcdf5689068ae369e1c566e4527e0e7f40a","unresolved":false,"context_lines":[{"line_number":4318,"context_line":"                        time.sleep(1)"},{"line_number":4319,"context_line":"                        attempt_count +\u003d 1"},{"line_number":4320,"context_line":""},{"line_number":4321,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ATTACHING:"},{"line_number":4322,"context_line":"                # If the share status is attaching it means we are racing with"},{"line_number":4323,"context_line":"                # the compute node. The mount is not completed yet or something"},{"line_number":4324,"context_line":"                # really bad happened. So we need to wait for a coherent status"},{"line_number":4325,"context_line":"                # or set the instance in error state."},{"line_number":4326,"context_line":"                LOG.warning("},{"line_number":4327,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is in \""},{"line_number":4328,"context_line":"                    \"attaching state. Waiting for compute node to finish.\","},{"line_number":4329,"context_line":"                    share_mapping.share_id,"},{"line_number":4330,"context_line":"                    instance.id"},{"line_number":4331,"context_line":"                )"},{"line_number":4332,"context_line":"                _wait_for_compute_node()"},{"line_number":4333,"context_line":""},{"line_number":4334,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ERROR:"},{"line_number":4335,"context_line":"                LOG.error("}],"source_content_type":"text/x-python","patch_set":41,"id":"5cfdf0ab_91f5e656","line":4332,"range":{"start_line":4321,"start_character":0,"end_line":4332,"end_character":40},"in_reply_to":"2e3ebeb4_929b5777","updated":"2024-06-03 14:42:27.000000000","message":"Done","commit_id":"352a90b26e0732d17f350e60a7b8b62d2dbe0949"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"343b1b26f815dc9e3d235fed15bb984f821b4860","unresolved":true,"context_lines":[{"line_number":4640,"context_line":"                    return True"},{"line_number":4641,"context_line":"                return False"},{"line_number":4642,"context_line":""},{"line_number":4643,"context_line":"            def _apply_policy():"},{"line_number":4644,"context_line":"                # self.manila_api.lock(share_mapping.share_id)"},{"line_number":4645,"context_line":"                # Explicitly locking the share is not needed as"},{"line_number":4646,"context_line":"                # create_access_rule() from the sdk will do it if the"},{"line_number":4647,"context_line":"                # restrict_visibility and restrict_deletion flags are passed"},{"line_number":4648,"context_line":"                self.manila_api.allow("},{"line_number":4649,"context_line":"                    share_mapping.share_id, access_type, access_to, \"rw\""},{"line_number":4650,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":41,"id":"921e16ba_2e416b1c","line":4647,"range":{"start_line":4643,"start_character":0,"end_line":4647,"end_character":76},"updated":"2024-02-13 15:05:15.000000000","message":"This does not seems to work for me. I can delete the share in manila while it is used by a VM.","commit_id":"352a90b26e0732d17f350e60a7b8b62d2dbe0949"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":4640,"context_line":"                    return True"},{"line_number":4641,"context_line":"                return False"},{"line_number":4642,"context_line":""},{"line_number":4643,"context_line":"            def _apply_policy():"},{"line_number":4644,"context_line":"                # self.manila_api.lock(share_mapping.share_id)"},{"line_number":4645,"context_line":"                # Explicitly locking the share is not needed as"},{"line_number":4646,"context_line":"                # create_access_rule() from the sdk will do it if the"},{"line_number":4647,"context_line":"                # restrict_visibility and restrict_deletion flags are passed"},{"line_number":4648,"context_line":"                self.manila_api.allow("},{"line_number":4649,"context_line":"                    share_mapping.share_id, access_type, access_to, \"rw\""},{"line_number":4650,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":41,"id":"646494bc_df579713","line":4647,"range":{"start_line":4643,"start_character":0,"end_line":4647,"end_character":76},"in_reply_to":"147b3136_1b74fffb","updated":"2024-07-03 15:44:55.000000000","message":"Done","commit_id":"352a90b26e0732d17f350e60a7b8b62d2dbe0949"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"777ca2d191e2417ce32a011479b804fc3507b677","unresolved":true,"context_lines":[{"line_number":4640,"context_line":"                    return True"},{"line_number":4641,"context_line":"                return False"},{"line_number":4642,"context_line":""},{"line_number":4643,"context_line":"            def _apply_policy():"},{"line_number":4644,"context_line":"                # self.manila_api.lock(share_mapping.share_id)"},{"line_number":4645,"context_line":"                # Explicitly locking the share is not needed as"},{"line_number":4646,"context_line":"                # create_access_rule() from the sdk will do it if the"},{"line_number":4647,"context_line":"                # restrict_visibility and restrict_deletion flags are passed"},{"line_number":4648,"context_line":"                self.manila_api.allow("},{"line_number":4649,"context_line":"                    share_mapping.share_id, access_type, access_to, \"rw\""},{"line_number":4650,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":41,"id":"a802bc2f_79dc8e28","line":4647,"range":{"start_line":4643,"start_character":0,"end_line":4647,"end_character":76},"in_reply_to":"921e16ba_2e416b1c","updated":"2024-02-16 14:12:00.000000000","message":"This should be fixed and was to a change in the sdk.\n\"restrict_visibility\" and \"restrict_deletion\" respectively changed to \"lock_visibility\" and  \"lock_deletion\".\n\nShould be fixed now.","commit_id":"352a90b26e0732d17f350e60a7b8b62d2dbe0949"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ce6863a4b289cc1308f5dcc8bc1404d7d02e4a68","unresolved":true,"context_lines":[{"line_number":4640,"context_line":"                    return True"},{"line_number":4641,"context_line":"                return False"},{"line_number":4642,"context_line":""},{"line_number":4643,"context_line":"            def _apply_policy():"},{"line_number":4644,"context_line":"                # self.manila_api.lock(share_mapping.share_id)"},{"line_number":4645,"context_line":"                # Explicitly locking the share is not needed as"},{"line_number":4646,"context_line":"                # create_access_rule() from the sdk will do it if the"},{"line_number":4647,"context_line":"                # restrict_visibility and restrict_deletion flags are passed"},{"line_number":4648,"context_line":"                self.manila_api.allow("},{"line_number":4649,"context_line":"                    share_mapping.share_id, access_type, access_to, \"rw\""},{"line_number":4650,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":41,"id":"147b3136_1b74fffb","line":4647,"range":{"start_line":4643,"start_character":0,"end_line":4647,"end_character":76},"in_reply_to":"a802bc2f_79dc8e28","updated":"2024-02-19 16:43:38.000000000","message":"I will retest this after your next update and if I still see it, then I will ping you.","commit_id":"352a90b26e0732d17f350e60a7b8b62d2dbe0949"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"343b1b26f815dc9e3d235fed15bb984f821b4860","unresolved":true,"context_lines":[{"line_number":4714,"context_line":"            except (exception.ShareMountError) as e:"},{"line_number":4715,"context_line":"                _set_share_mapping_status(fields.ShareMappingStatus.ERROR)"},{"line_number":4716,"context_line":"                LOG.error(e.format_message())"},{"line_number":4717,"context_line":"                raise"},{"line_number":4718,"context_line":""},{"line_number":4719,"context_line":"        _mount_share(context, instance, share_mapping)"},{"line_number":4720,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"c0622e11_100764c4","line":4717,"updated":"2024-02-13 15:05:15.000000000","message":"you can use a single expect block for all the exceptions (except BadRequest) as all has the same action in the block. You just need to list the exception types for the block.","commit_id":"352a90b26e0732d17f350e60a7b8b62d2dbe0949"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"777ca2d191e2417ce32a011479b804fc3507b677","unresolved":false,"context_lines":[{"line_number":4714,"context_line":"            except (exception.ShareMountError) as e:"},{"line_number":4715,"context_line":"                _set_share_mapping_status(fields.ShareMappingStatus.ERROR)"},{"line_number":4716,"context_line":"                LOG.error(e.format_message())"},{"line_number":4717,"context_line":"                raise"},{"line_number":4718,"context_line":""},{"line_number":4719,"context_line":"        _mount_share(context, instance, share_mapping)"},{"line_number":4720,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"9bb97be3_cb41f0d2","line":4717,"in_reply_to":"c0622e11_100764c4","updated":"2024-02-16 14:12:00.000000000","message":"Done","commit_id":"352a90b26e0732d17f350e60a7b8b62d2dbe0949"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"343b1b26f815dc9e3d235fed15bb984f821b4860","unresolved":true,"context_lines":[{"line_number":4724,"context_line":""},{"line_number":4725,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4726,"context_line":"        def _umount_share(context, instance, share_mapping):"},{"line_number":4727,"context_line":"            def _set_share_mapping_status(status):"},{"line_number":4728,"context_line":"                share_mapping.status \u003d status"},{"line_number":4729,"context_line":"                share_mapping.save()"},{"line_number":4730,"context_line":""},{"line_number":4731,"context_line":"            try:"},{"line_number":4732,"context_line":"                still_used \u003d self.driver.umount_share("}],"source_content_type":"text/x-python","patch_set":41,"id":"1cd6d3c5_812093f4","line":4729,"range":{"start_line":4727,"start_character":0,"end_line":4729,"end_character":36},"updated":"2024-02-13 15:05:15.000000000","message":"you have functions (e.g. attach() and detach()) in ShareMapping that set the status of the object and do the save. Can this also be moved there?","commit_id":"352a90b26e0732d17f350e60a7b8b62d2dbe0949"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"777ca2d191e2417ce32a011479b804fc3507b677","unresolved":true,"context_lines":[{"line_number":4724,"context_line":""},{"line_number":4725,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4726,"context_line":"        def _umount_share(context, instance, share_mapping):"},{"line_number":4727,"context_line":"            def _set_share_mapping_status(status):"},{"line_number":4728,"context_line":"                share_mapping.status \u003d status"},{"line_number":4729,"context_line":"                share_mapping.save()"},{"line_number":4730,"context_line":""},{"line_number":4731,"context_line":"            try:"},{"line_number":4732,"context_line":"                still_used \u003d self.driver.umount_share("}],"source_content_type":"text/x-python","patch_set":41,"id":"a1529548_8f7b393d","line":4729,"range":{"start_line":4727,"start_character":0,"end_line":4729,"end_character":36},"in_reply_to":"1cd6d3c5_812093f4","updated":"2024-02-16 14:12:00.000000000","message":"Here deactivate() should be used. But the message will not be correct.\nThat\u0027s the reason why I don\u0027t use the deactivate() method here.","commit_id":"352a90b26e0732d17f350e60a7b8b62d2dbe0949"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":4724,"context_line":""},{"line_number":4725,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4726,"context_line":"        def _umount_share(context, instance, share_mapping):"},{"line_number":4727,"context_line":"            def _set_share_mapping_status(status):"},{"line_number":4728,"context_line":"                share_mapping.status \u003d status"},{"line_number":4729,"context_line":"                share_mapping.save()"},{"line_number":4730,"context_line":""},{"line_number":4731,"context_line":"            try:"},{"line_number":4732,"context_line":"                still_used \u003d self.driver.umount_share("}],"source_content_type":"text/x-python","patch_set":41,"id":"24738dc4_73be86c3","line":4729,"range":{"start_line":4727,"start_character":0,"end_line":4729,"end_character":36},"in_reply_to":"81841c5e_127cc252","updated":"2024-07-03 15:44:55.000000000","message":"Done","commit_id":"352a90b26e0732d17f350e60a7b8b62d2dbe0949"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ce6863a4b289cc1308f5dcc8bc1404d7d02e4a68","unresolved":true,"context_lines":[{"line_number":4724,"context_line":""},{"line_number":4725,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4726,"context_line":"        def _umount_share(context, instance, share_mapping):"},{"line_number":4727,"context_line":"            def _set_share_mapping_status(status):"},{"line_number":4728,"context_line":"                share_mapping.status \u003d status"},{"line_number":4729,"context_line":"                share_mapping.save()"},{"line_number":4730,"context_line":""},{"line_number":4731,"context_line":"            try:"},{"line_number":4732,"context_line":"                still_used \u003d self.driver.umount_share("}],"source_content_type":"text/x-python","patch_set":41,"id":"81841c5e_127cc252","line":4729,"range":{"start_line":4727,"start_character":0,"end_line":4729,"end_character":36},"in_reply_to":"a1529548_8f7b393d","updated":"2024-02-19 16:43:38.000000000","message":"I\u0027m not sure why the message would be incorrect.","commit_id":"352a90b26e0732d17f350e60a7b8b62d2dbe0949"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":true,"context_lines":[{"line_number":3096,"context_line":"    def _power_off_instance("},{"line_number":3097,"context_line":"            self, context, instance, clean_shutdown\u003dTrue, share_info\u003dNone):"},{"line_number":3098,"context_line":"        \"\"\"Power off an instance on this host.\"\"\""},{"line_number":3099,"context_line":"        if share_info is None:"},{"line_number":3100,"context_line":"            share_info \u003d objects.ShareMappingList()"},{"line_number":3101,"context_line":"        timeout, retry_interval \u003d self._get_power_off_values("},{"line_number":3102,"context_line":"            instance, clean_shutdown)"}],"source_content_type":"text/x-python","patch_set":43,"id":"d8a8119e_f554e6a9","line":3099,"updated":"2024-02-28 13:13:31.000000000","message":"could we just call _get_share_info here and always do the unmount regardless of the caller passing in the shares or not? Or do we have cases when the caller intentionally don\u0027t want to unmount?","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"b68785d13a37ede9d1d986a5d84716ff9262b8fe","unresolved":false,"context_lines":[{"line_number":3096,"context_line":"    def _power_off_instance("},{"line_number":3097,"context_line":"            self, context, instance, clean_shutdown\u003dTrue, share_info\u003dNone):"},{"line_number":3098,"context_line":"        \"\"\"Power off an instance on this host.\"\"\""},{"line_number":3099,"context_line":"        if share_info is None:"},{"line_number":3100,"context_line":"            share_info \u003d objects.ShareMappingList()"},{"line_number":3101,"context_line":"        timeout, retry_interval \u003d self._get_power_off_values("},{"line_number":3102,"context_line":"            instance, clean_shutdown)"}],"source_content_type":"text/x-python","patch_set":43,"id":"1df2f778_c8e59c4c","line":3099,"in_reply_to":"d8a8119e_f554e6a9","updated":"2024-03-11 15:44:12.000000000","message":"You are right.\nDone.","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":true,"context_lines":[{"line_number":4273,"context_line":"        for share_mapping in objects.ShareMappingList.get_by_instance_uuid("},{"line_number":4274,"context_line":"            context, instance.uuid"},{"line_number":4275,"context_line":"        ):"},{"line_number":4276,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ATTACHING:"},{"line_number":4277,"context_line":"                # If the share status is attaching it means we are racing with"},{"line_number":4278,"context_line":"                # the compute node. The mount is not completed yet or something"},{"line_number":4279,"context_line":"                # really bad happened. So we set the instance in error state."},{"line_number":4280,"context_line":"                LOG.error("},{"line_number":4281,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is \""},{"line_number":4282,"context_line":"                    \"still in attaching state. Setting the instance \""}],"source_content_type":"text/x-python","patch_set":43,"id":"98dd909b_2c8ddf27","line":4279,"range":{"start_line":4276,"start_character":0,"end_line":4279,"end_character":77},"updated":"2024-02-28 13:13:31.000000000","message":"now it can happen that the share is in attaching as the allow_share RPC is still running when the user starts the VM. In that case I rather reject the start instance action and let the user wait until the share goes to INACTIVE and then let the user retry the start action. But maybe in other cases setting the instance to error is the good move(e.g. in init_instance). As this function called from many places I would rather let the caller decide based on where we are in the flow about how to fail.\n\nBut I can be convinced to always set the instance to error here if the user can recover the instance form the ERROR state easily.","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"44a3e6ce5123eca7e33ee02b000b7d277726925e","unresolved":true,"context_lines":[{"line_number":4273,"context_line":"        for share_mapping in objects.ShareMappingList.get_by_instance_uuid("},{"line_number":4274,"context_line":"            context, instance.uuid"},{"line_number":4275,"context_line":"        ):"},{"line_number":4276,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ATTACHING:"},{"line_number":4277,"context_line":"                # If the share status is attaching it means we are racing with"},{"line_number":4278,"context_line":"                # the compute node. The mount is not completed yet or something"},{"line_number":4279,"context_line":"                # really bad happened. So we set the instance in error state."},{"line_number":4280,"context_line":"                LOG.error("},{"line_number":4281,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is \""},{"line_number":4282,"context_line":"                    \"still in attaching state. Setting the instance \""}],"source_content_type":"text/x-python","patch_set":43,"id":"d5533e8b_9a15e33a","line":4279,"range":{"start_line":4276,"start_character":0,"end_line":4279,"end_character":77},"in_reply_to":"5e96b0e3_7d88cee0","updated":"2024-05-13 05:55:23.000000000","message":"i have one idea, We can define a timeout time for starting the vm, such as 5min, if more than 5min share_mapping.status or attaching or detaching, it is considered a failure and the vm needs to be set to error. If not, the vm is considered to be mounting or unmounting share properly.\n\n      if (\n                share_mapping.status \u003d\u003d fields.ShareMappingStatus.ATTACHING or\n                share_mapping.status \u003d\u003d fields.ShareMappingStatus.DETACHING\n            ):\n                time_str \u003d share_mapping.get(\u0027updated_at\u0027)\n                datetime_obj \u003d datetime.strptime(time_str, \"%Y-%m-%d %H:%M:%S\")\n                timestamp \u003d time.mktime(datetime_obj.timetuple())\n                time_interval \u003d time.time() - timestamp\n                if time_interval \u003e 300:  #It can be set as a configuration item\n                    \"then need to set vm to error\"","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"b68785d13a37ede9d1d986a5d84716ff9262b8fe","unresolved":true,"context_lines":[{"line_number":4273,"context_line":"        for share_mapping in objects.ShareMappingList.get_by_instance_uuid("},{"line_number":4274,"context_line":"            context, instance.uuid"},{"line_number":4275,"context_line":"        ):"},{"line_number":4276,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ATTACHING:"},{"line_number":4277,"context_line":"                # If the share status is attaching it means we are racing with"},{"line_number":4278,"context_line":"                # the compute node. The mount is not completed yet or something"},{"line_number":4279,"context_line":"                # really bad happened. So we set the instance in error state."},{"line_number":4280,"context_line":"                LOG.error("},{"line_number":4281,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is \""},{"line_number":4282,"context_line":"                    \"still in attaching state. Setting the instance \""}],"source_content_type":"text/x-python","patch_set":43,"id":"5e96b0e3_7d88cee0","line":4279,"range":{"start_line":4276,"start_character":0,"end_line":4279,"end_character":77},"in_reply_to":"98dd909b_2c8ddf27","updated":"2024-03-11 15:44:12.000000000","message":"Remember last time I said the user should ensure the share is in inactive status before starting the instance; otherwise, he will get an error.\nIt seemed to me that people agreed.\n\nAlso, Sean said that the usual way to get out of an instance error is hard_reboot.\nSo this is the case here.\n\nFrom the user\u0027s perspective, an action will be required to start again or hard_reboot, which is not so different.\n\nSo I tend to think the approach is ok. But let\u0027s see what the others think about it.","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":4273,"context_line":"        for share_mapping in objects.ShareMappingList.get_by_instance_uuid("},{"line_number":4274,"context_line":"            context, instance.uuid"},{"line_number":4275,"context_line":"        ):"},{"line_number":4276,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ATTACHING:"},{"line_number":4277,"context_line":"                # If the share status is attaching it means we are racing with"},{"line_number":4278,"context_line":"                # the compute node. The mount is not completed yet or something"},{"line_number":4279,"context_line":"                # really bad happened. So we set the instance in error state."},{"line_number":4280,"context_line":"                LOG.error("},{"line_number":4281,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is \""},{"line_number":4282,"context_line":"                    \"still in attaching state. Setting the instance \""}],"source_content_type":"text/x-python","patch_set":43,"id":"ade7bdcb_82e0e6b7","line":4279,"range":{"start_line":4276,"start_character":0,"end_line":4279,"end_character":77},"in_reply_to":"d5533e8b_9a15e33a","updated":"2024-07-03 15:44:55.000000000","message":"Closing the comment as it\u0027s done.","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":true,"context_lines":[{"line_number":4292,"context_line":"                    instance_uuid\u003dinstance.id,"},{"line_number":4293,"context_line":"                )"},{"line_number":4294,"context_line":""},{"line_number":4295,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ERROR:"},{"line_number":4296,"context_line":"                LOG.warning("},{"line_number":4297,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is in \""},{"line_number":4298,"context_line":"                    \"error state.\","}],"source_content_type":"text/x-python","patch_set":43,"id":"5f68aa05_f0f9c611","line":4295,"updated":"2024-02-28 13:13:31.000000000","message":"do the callers now handle the shares in error?\n\nsome of the callers will call _mount_all_shares after _get_share_info and that will retry the mount even if the share is in ERROR and set the instance state if the mount fails. So that is good. However there are callers as far as I see, where mount is not always called (e.g. _reboot_instance (see my comment there too)), so there the share in ERROR might lead to an broken instance.\n\n\nWould it work if we always call _mount_all_shares (or unmount...) after _get_share_info? If so then I would combine the those calls together so the caller only need to call one function that does the retry of the mount (unmount) of the shares in ERROR if needed and sets the instance to ERROR if it still fails.\n\n//later\nThe share can be in ERROR not just because a mount failed previously, but also because the manila export failed. So simply trying the mount on an ERRORed share might not work if it is in ERROR due to the manila export failed earlier. Still the mount call will put the instance to ERROR in this case which is OK.","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"44a3e6ce5123eca7e33ee02b000b7d277726925e","unresolved":true,"context_lines":[{"line_number":4292,"context_line":"                    instance_uuid\u003dinstance.id,"},{"line_number":4293,"context_line":"                )"},{"line_number":4294,"context_line":""},{"line_number":4295,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ERROR:"},{"line_number":4296,"context_line":"                LOG.warning("},{"line_number":4297,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is in \""},{"line_number":4298,"context_line":"                    \"error state.\","}],"source_content_type":"text/x-python","patch_set":43,"id":"6a99ddb7_a76df37b","line":4295,"in_reply_to":"2d5c5b89_0c3d071f","updated":"2024-05-13 05:55:23.000000000","message":"why has manila export failed?\nif a share is available in manila, the share must has export_location.\nIf fail to mount share using this export_location, it is still mount failed.\n\nso i agree we call  _mount_all_shares (or unmount...) after _get_share_info.\nand add new field previous_status to share_mapping.\n\n    if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ERROR:\n        if share_mapping.previous_status \u003d\u003d fields.ShareMappingStatus.ATTACHING:\n            self._mount_share(context, instance, share_mapping)\n        if share_mapping.previous_status \u003d\u003d fields.ShareMappingStatus.DETACHING:\n            self._umount_share(context, instance, share_mapping)","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"b68785d13a37ede9d1d986a5d84716ff9262b8fe","unresolved":true,"context_lines":[{"line_number":4292,"context_line":"                    instance_uuid\u003dinstance.id,"},{"line_number":4293,"context_line":"                )"},{"line_number":4294,"context_line":""},{"line_number":4295,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ERROR:"},{"line_number":4296,"context_line":"                LOG.warning("},{"line_number":4297,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is in \""},{"line_number":4298,"context_line":"                    \"error state.\","}],"source_content_type":"text/x-python","patch_set":43,"id":"2d5c5b89_0c3d071f","line":4295,"in_reply_to":"5f68aa05_f0f9c611","updated":"2024-03-11 15:44:12.000000000","message":"I understand it is okay based on your statement later. Please let me know if this is not the case.","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2b0c86adaae31b721bd7272e2e432564b4c9cf88","unresolved":true,"context_lines":[{"line_number":4292,"context_line":"                    instance_uuid\u003dinstance.id,"},{"line_number":4293,"context_line":"                )"},{"line_number":4294,"context_line":""},{"line_number":4295,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ERROR:"},{"line_number":4296,"context_line":"                LOG.warning("},{"line_number":4297,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is in \""},{"line_number":4298,"context_line":"                    \"error state.\","}],"source_content_type":"text/x-python","patch_set":43,"id":"bafb32ed_ee487227","line":4295,"in_reply_to":"6a99ddb7_a76df37b","updated":"2024-05-22 15:01:37.000000000","message":"@Uggla: I still think this is an issue to settle.\n\nThe general issue is the goal of this functions and what assumptions the callers can make about the returned list.\n\nThis function is used in may places to query the list of share_mappings of the instance. It does error handling for attaching and detaching state share_mapping state but does not do error handling for the shares_mappings in ERROR state. \n\nSo each caller still need to handle the share_mappings in ERROR state but they don\u0027t have to care about the mapping in attaching or detaching state (as that is handled here). \n\nDoes all callers handle share_mappings in ERROR state? As far as I see some caller handles the ERROR state by _mount_all_shares but not all callers do that. So some callers will ignore the shares in ERROR state instead of failing the actual instance action or retrying the mount and failing the action if the mount fails. See _reboot_instance. (but I think rescue and resume also affected similarly).","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"93d363b0c2736dcf683afbc1f9aeb7600efe6b51","unresolved":true,"context_lines":[{"line_number":4292,"context_line":"                    instance_uuid\u003dinstance.id,"},{"line_number":4293,"context_line":"                )"},{"line_number":4294,"context_line":""},{"line_number":4295,"context_line":"            if share_mapping.status \u003d\u003d fields.ShareMappingStatus.ERROR:"},{"line_number":4296,"context_line":"                LOG.warning("},{"line_number":4297,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is in \""},{"line_number":4298,"context_line":"                    \"error state.\","}],"source_content_type":"text/x-python","patch_set":43,"id":"1e204eae_b1c469f0","line":4295,"in_reply_to":"bafb32ed_ee487227","updated":"2024-11-13 14:34:55.000000000","message":"That\u0027s a valid concern, I just wonder whether that needs to hold the series.","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":true,"context_lines":[{"line_number":4588,"context_line":"                )"},{"line_number":4589,"context_line":"                return access"},{"line_number":4590,"context_line":""},{"line_number":4591,"context_line":"            def _check_access():"},{"line_number":4592,"context_line":"                access \u003d _get_access()"},{"line_number":4593,"context_line":"                if access is not None and access.state \u003d\u003d \u0027active\u0027:"},{"line_number":4594,"context_line":"                    return True"}],"source_content_type":"text/x-python","patch_set":43,"id":"3a2847b2_998596c0","line":4591,"updated":"2024-02-28 13:13:31.000000000","message":"nit: I would rename it to _has_access()","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"b68785d13a37ede9d1d986a5d84716ff9262b8fe","unresolved":false,"context_lines":[{"line_number":4588,"context_line":"                )"},{"line_number":4589,"context_line":"                return access"},{"line_number":4590,"context_line":""},{"line_number":4591,"context_line":"            def _check_access():"},{"line_number":4592,"context_line":"                access \u003d _get_access()"},{"line_number":4593,"context_line":"                if access is not None and access.state \u003d\u003d \u0027active\u0027:"},{"line_number":4594,"context_line":"                    return True"}],"source_content_type":"text/x-python","patch_set":43,"id":"e220c23a_57032bbc","line":4591,"in_reply_to":"3a2847b2_998596c0","updated":"2024-03-11 15:44:12.000000000","message":"Done","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":true,"context_lines":[{"line_number":4590,"context_line":""},{"line_number":4591,"context_line":"            def _check_access():"},{"line_number":4592,"context_line":"                access \u003d _get_access()"},{"line_number":4593,"context_line":"                if access is not None and access.state \u003d\u003d \u0027active\u0027:"},{"line_number":4594,"context_line":"                    return True"},{"line_number":4595,"context_line":"                return False"},{"line_number":4596,"context_line":""},{"line_number":4597,"context_line":"            def _apply_policy():"},{"line_number":4598,"context_line":"                # self.manila_api.lock(share_mapping.share_id)"}],"source_content_type":"text/x-python","patch_set":43,"id":"1172dd08_4e38c9a7","line":4595,"range":{"start_line":4593,"start_character":0,"end_line":4595,"end_character":28},"updated":"2024-02-28 13:13:31.000000000","message":"this can be simplified to\n```\nreturn access is not None and access.state \u003d\u003d \u0027active\u0027\n```","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"b68785d13a37ede9d1d986a5d84716ff9262b8fe","unresolved":false,"context_lines":[{"line_number":4590,"context_line":""},{"line_number":4591,"context_line":"            def _check_access():"},{"line_number":4592,"context_line":"                access \u003d _get_access()"},{"line_number":4593,"context_line":"                if access is not None and access.state \u003d\u003d \u0027active\u0027:"},{"line_number":4594,"context_line":"                    return True"},{"line_number":4595,"context_line":"                return False"},{"line_number":4596,"context_line":""},{"line_number":4597,"context_line":"            def _apply_policy():"},{"line_number":4598,"context_line":"                # self.manila_api.lock(share_mapping.share_id)"}],"source_content_type":"text/x-python","patch_set":43,"id":"6bcf888f_c685c00f","line":4595,"range":{"start_line":4593,"start_character":0,"end_line":4595,"end_character":28},"in_reply_to":"1172dd08_4e38c9a7","updated":"2024-03-11 15:44:12.000000000","message":"Done","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":true,"context_lines":[{"line_number":4631,"context_line":"                    )"},{"line_number":4632,"context_line":""},{"line_number":4633,"context_line":"            try:"},{"line_number":4634,"context_line":"                access_type \u003d \u0027ip\u0027"},{"line_number":4635,"context_line":"                access_to \u003d CONF.my_block_storage_ip"},{"line_number":4636,"context_line":""},{"line_number":4637,"context_line":"                if not _check_access():"},{"line_number":4638,"context_line":"                    _apply_policy()"},{"line_number":4639,"context_line":"                    _wait_policy_to_be_applied()"}],"source_content_type":"text/x-python","patch_set":43,"id":"4b3ea4ac_d4183d12","line":4636,"range":{"start_line":4634,"start_character":1,"end_line":4636,"end_character":1},"updated":"2024-02-28 13:13:31.000000000","message":"you do this conditionally in _mount_share below based on share proto. Do we need to make this conditional here too, or make it unconditional below?","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"b68785d13a37ede9d1d986a5d84716ff9262b8fe","unresolved":false,"context_lines":[{"line_number":4631,"context_line":"                    )"},{"line_number":4632,"context_line":""},{"line_number":4633,"context_line":"            try:"},{"line_number":4634,"context_line":"                access_type \u003d \u0027ip\u0027"},{"line_number":4635,"context_line":"                access_to \u003d CONF.my_block_storage_ip"},{"line_number":4636,"context_line":""},{"line_number":4637,"context_line":"                if not _check_access():"},{"line_number":4638,"context_line":"                    _apply_policy()"},{"line_number":4639,"context_line":"                    _wait_policy_to_be_applied()"}],"source_content_type":"text/x-python","patch_set":43,"id":"0efc7848_e1324cc7","line":4636,"range":{"start_line":4634,"start_character":1,"end_line":4636,"end_character":1},"in_reply_to":"4b3ea4ac_d4183d12","updated":"2024-03-11 15:44:12.000000000","message":"This is a rebase mistake.\nEverything about CEPHFS should go in the appropriate commit later in the series.","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":true,"context_lines":[{"line_number":4670,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4671,"context_line":"        def _deny_share(context, instance, share_mapping):"},{"line_number":4672,"context_line":"            def check_share_usage(context, share_id):"},{"line_number":4673,"context_line":"                share_mappings \u003d ("},{"line_number":4674,"context_line":"                    objects.share_mapping.ShareMappingList.get_by_share_id("},{"line_number":4675,"context_line":"                        context, share_mapping.share_id"},{"line_number":4676,"context_line":"                    )"}],"source_content_type":"text/x-python","patch_set":43,"id":"db70fa92_2cbb48cd","line":4673,"updated":"2024-02-28 13:13:31.000000000","message":"I would name this more precisely to avoid mixing it with the list of share_mappigns for an instance that is already in scope, as this is a list of mappings for a given share across all instances.\n\nAlso, I think we should only consider share mapping of this share used on the current compute and not across all the computes. We can deny access to this host even if other hosts are using the same share actively.","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2b0c86adaae31b721bd7272e2e432564b4c9cf88","unresolved":true,"context_lines":[{"line_number":4670,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4671,"context_line":"        def _deny_share(context, instance, share_mapping):"},{"line_number":4672,"context_line":"            def check_share_usage(context, share_id):"},{"line_number":4673,"context_line":"                share_mappings \u003d ("},{"line_number":4674,"context_line":"                    objects.share_mapping.ShareMappingList.get_by_share_id("},{"line_number":4675,"context_line":"                        context, share_mapping.share_id"},{"line_number":4676,"context_line":"                    )"}],"source_content_type":"text/x-python","patch_set":43,"id":"7fc4d486_67c7cd8f","line":4673,"in_reply_to":"66167a74_8460323a","updated":"2024-05-22 15:01:37.000000000","message":"I still would like to get the local variable renamed to make a difference between share_mapping that is all the share mappings of the given instance and the share_mappings that is all the mappings of a given share.","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eecacfcdf5689068ae369e1c566e4527e0e7f40a","unresolved":false,"context_lines":[{"line_number":4670,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4671,"context_line":"        def _deny_share(context, instance, share_mapping):"},{"line_number":4672,"context_line":"            def check_share_usage(context, share_id):"},{"line_number":4673,"context_line":"                share_mappings \u003d ("},{"line_number":4674,"context_line":"                    objects.share_mapping.ShareMappingList.get_by_share_id("},{"line_number":4675,"context_line":"                        context, share_mapping.share_id"},{"line_number":4676,"context_line":"                    )"}],"source_content_type":"text/x-python","patch_set":43,"id":"4389401c_d2668f39","line":4673,"in_reply_to":"7fc4d486_67c7cd8f","updated":"2024-06-03 14:42:27.000000000","message":"Done","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"b68785d13a37ede9d1d986a5d84716ff9262b8fe","unresolved":true,"context_lines":[{"line_number":4670,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4671,"context_line":"        def _deny_share(context, instance, share_mapping):"},{"line_number":4672,"context_line":"            def check_share_usage(context, share_id):"},{"line_number":4673,"context_line":"                share_mappings \u003d ("},{"line_number":4674,"context_line":"                    objects.share_mapping.ShareMappingList.get_by_share_id("},{"line_number":4675,"context_line":"                        context, share_mapping.share_id"},{"line_number":4676,"context_line":"                    )"}],"source_content_type":"text/x-python","patch_set":43,"id":"66167a74_8460323a","line":4673,"in_reply_to":"db70fa92_2cbb48cd","updated":"2024-03-11 15:44:12.000000000","message":"\u003e\u003e We can deny access to this host even if other hosts are using the same share actively.\n\nThat\u0027s true for NFS but not CEPHFS. Also, the share should not be mounted anymore on the host, so not accessible.\n\nSo, I think it isn\u0027t worth adding complexity here because the benefit is low.","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":true,"context_lines":[{"line_number":4677,"context_line":"                )"},{"line_number":4678,"context_line":""},{"line_number":4679,"context_line":"                return not all("},{"line_number":4680,"context_line":"                    ["},{"line_number":4681,"context_line":"                        (share.status \u003d\u003d \"inactive\" or share.status \u003d\u003d \"error\")"},{"line_number":4682,"context_line":"                        for share in share_mappings"},{"line_number":4683,"context_line":"                    ]"}],"source_content_type":"text/x-python","patch_set":43,"id":"dd47bd6c_4298fa1a","line":4680,"updated":"2024-02-28 13:13:31.000000000","message":"you can drop the \u0027[\u0027 and \u0027]\u0027, python will do the comprehension even if it is directly in the param list.\n\n```\n\u003e\u003e\u003e all(i for i in [1,2,3])\nTrue\n```","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"b68785d13a37ede9d1d986a5d84716ff9262b8fe","unresolved":false,"context_lines":[{"line_number":4677,"context_line":"                )"},{"line_number":4678,"context_line":""},{"line_number":4679,"context_line":"                return not all("},{"line_number":4680,"context_line":"                    ["},{"line_number":4681,"context_line":"                        (share.status \u003d\u003d \"inactive\" or share.status \u003d\u003d \"error\")"},{"line_number":4682,"context_line":"                        for share in share_mappings"},{"line_number":4683,"context_line":"                    ]"}],"source_content_type":"text/x-python","patch_set":43,"id":"e8dbb64c_462ce431","line":4680,"in_reply_to":"dd47bd6c_4298fa1a","updated":"2024-03-11 15:44:12.000000000","message":"Done","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":true,"context_lines":[{"line_number":4678,"context_line":""},{"line_number":4679,"context_line":"                return not all("},{"line_number":4680,"context_line":"                    ["},{"line_number":4681,"context_line":"                        (share.status \u003d\u003d \"inactive\" or share.status \u003d\u003d \"error\")"},{"line_number":4682,"context_line":"                        for share in share_mappings"},{"line_number":4683,"context_line":"                    ]"},{"line_number":4684,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":43,"id":"3744804d_ee6b6f03","line":4681,"range":{"start_line":4681,"start_character":42,"end_line":4681,"end_character":50},"updated":"2024-02-28 13:13:31.000000000","message":"don\u0027t we have constants for this in ShareMappingStatus for these?","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"b68785d13a37ede9d1d986a5d84716ff9262b8fe","unresolved":false,"context_lines":[{"line_number":4678,"context_line":""},{"line_number":4679,"context_line":"                return not all("},{"line_number":4680,"context_line":"                    ["},{"line_number":4681,"context_line":"                        (share.status \u003d\u003d \"inactive\" or share.status \u003d\u003d \"error\")"},{"line_number":4682,"context_line":"                        for share in share_mappings"},{"line_number":4683,"context_line":"                    ]"},{"line_number":4684,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":43,"id":"dca62aa1_99b09aa6","line":4681,"range":{"start_line":4681,"start_character":42,"end_line":4681,"end_character":50},"in_reply_to":"3744804d_ee6b6f03","updated":"2024-03-11 15:44:12.000000000","message":"😳","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":true,"context_lines":[{"line_number":4731,"context_line":""},{"line_number":4732,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4733,"context_line":"        def _mount_share(context, instance, share_mapping):"},{"line_number":4734,"context_line":"            def _get_access():"},{"line_number":4735,"context_line":"                access \u003d self.manila_api.get_access("},{"line_number":4736,"context_line":"                    share_mapping.share_id,"},{"line_number":4737,"context_line":"                    access_type,"},{"line_number":4738,"context_line":"                    access_to"},{"line_number":4739,"context_line":"                )"},{"line_number":4740,"context_line":"                return access"},{"line_number":4741,"context_line":""},{"line_number":4742,"context_line":"            def _enhance_share_mapping_with_ceph_credentials():"},{"line_number":4743,"context_line":"                # Enhance the share_mapping object by adding Ceph"}],"source_content_type":"text/x-python","patch_set":43,"id":"f86be1a4_abce1f40","line":4740,"range":{"start_line":4734,"start_character":0,"end_line":4740,"end_character":29},"updated":"2024-02-28 13:13:31.000000000","message":"this is now repeated. I would rather inline these to the call site as it is a simple function call forwarding without logic","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"b68785d13a37ede9d1d986a5d84716ff9262b8fe","unresolved":false,"context_lines":[{"line_number":4731,"context_line":""},{"line_number":4732,"context_line":"        @utils.synchronized(share_mapping.share_id)"},{"line_number":4733,"context_line":"        def _mount_share(context, instance, share_mapping):"},{"line_number":4734,"context_line":"            def _get_access():"},{"line_number":4735,"context_line":"                access \u003d self.manila_api.get_access("},{"line_number":4736,"context_line":"                    share_mapping.share_id,"},{"line_number":4737,"context_line":"                    access_type,"},{"line_number":4738,"context_line":"                    access_to"},{"line_number":4739,"context_line":"                )"},{"line_number":4740,"context_line":"                return access"},{"line_number":4741,"context_line":""},{"line_number":4742,"context_line":"            def _enhance_share_mapping_with_ceph_credentials():"},{"line_number":4743,"context_line":"                # Enhance the share_mapping object by adding Ceph"}],"source_content_type":"text/x-python","patch_set":43,"id":"3e8f8b9a_765ef644","line":4740,"range":{"start_line":4734,"start_character":0,"end_line":4740,"end_character":29},"in_reply_to":"f86be1a4_abce1f40","updated":"2024-03-11 15:44:12.000000000","message":"Done","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2b0c86adaae31b721bd7272e2e432564b4c9cf88","unresolved":true,"context_lines":[{"line_number":4282,"context_line":"                share_mapping.status \u003d\u003d fields.ShareMappingStatus.ATTACHING or"},{"line_number":4283,"context_line":"                share_mapping.status \u003d\u003d fields.ShareMappingStatus.DETACHING"},{"line_number":4284,"context_line":"            ):"},{"line_number":4285,"context_line":"                # If the share status is attaching it means we are racing with"},{"line_number":4286,"context_line":"                # the compute node. The mount is not completed yet or something"},{"line_number":4287,"context_line":"                # really bad happened. So we set the instance in error state."},{"line_number":4288,"context_line":"                LOG.error("},{"line_number":4289,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is \""},{"line_number":4290,"context_line":"                    \"still in attaching state. Setting the instance \""},{"line_number":4291,"context_line":"                    \"in error.\","},{"line_number":4292,"context_line":"                    share_mapping.share_id,"},{"line_number":4293,"context_line":"                    instance.id,"},{"line_number":4294,"context_line":"                )"},{"line_number":4295,"context_line":"                self._set_instance_obj_error_state("},{"line_number":4296,"context_line":"                    instance, clean_task_state\u003dTrue"},{"line_number":4297,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":47,"id":"0cf3d4c2_bf1fc36d","line":4294,"range":{"start_line":4285,"start_character":0,"end_line":4294,"end_character":17},"updated":"2024-05-22 15:01:37.000000000","message":"at some point you added the handling of the DETACHING state but the comment and the log message still only talks about the attaching case. This logging will be confusing during detach.","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eecacfcdf5689068ae369e1c566e4527e0e7f40a","unresolved":false,"context_lines":[{"line_number":4282,"context_line":"                share_mapping.status \u003d\u003d fields.ShareMappingStatus.ATTACHING or"},{"line_number":4283,"context_line":"                share_mapping.status \u003d\u003d fields.ShareMappingStatus.DETACHING"},{"line_number":4284,"context_line":"            ):"},{"line_number":4285,"context_line":"                # If the share status is attaching it means we are racing with"},{"line_number":4286,"context_line":"                # the compute node. The mount is not completed yet or something"},{"line_number":4287,"context_line":"                # really bad happened. So we set the instance in error state."},{"line_number":4288,"context_line":"                LOG.error("},{"line_number":4289,"context_line":"                    \"Share id \u0027%s\u0027 attached to server id \u0027%s\u0027 is \""},{"line_number":4290,"context_line":"                    \"still in attaching state. Setting the instance \""},{"line_number":4291,"context_line":"                    \"in error.\","},{"line_number":4292,"context_line":"                    share_mapping.share_id,"},{"line_number":4293,"context_line":"                    instance.id,"},{"line_number":4294,"context_line":"                )"},{"line_number":4295,"context_line":"                self._set_instance_obj_error_state("},{"line_number":4296,"context_line":"                    instance, clean_task_state\u003dTrue"},{"line_number":4297,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":47,"id":"de0d40f5_d6617bcb","line":4294,"range":{"start_line":4285,"start_character":0,"end_line":4294,"end_character":17},"in_reply_to":"0cf3d4c2_bf1fc36d","updated":"2024-06-03 14:42:27.000000000","message":"Done","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2b0c86adaae31b721bd7272e2e432564b4c9cf88","unresolved":true,"context_lines":[{"line_number":4634,"context_line":""},{"line_number":4635,"context_line":"            try:"},{"line_number":4636,"context_line":"                access_type \u003d \u0027ip\u0027"},{"line_number":4637,"context_line":"                access_to \u003d CONF.my_block_storage_ip"},{"line_number":4638,"context_line":""},{"line_number":4639,"context_line":"                if not _has_access():"},{"line_number":4640,"context_line":"                    _apply_policy()"}],"source_content_type":"text/x-python","patch_set":47,"id":"bd5c1dca_45dc89f3","line":4637,"updated":"2024-05-22 15:01:37.000000000","message":"I still would like to get an ack from Sean or Sylvain that it is OK to re-use the my_block_storage_ip config option for the file storage backend.","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"0878eccb78a663fb4da9031597c23964da8b145d","unresolved":false,"context_lines":[{"line_number":4634,"context_line":""},{"line_number":4635,"context_line":"            try:"},{"line_number":4636,"context_line":"                access_type \u003d \u0027ip\u0027"},{"line_number":4637,"context_line":"                access_to \u003d CONF.my_block_storage_ip"},{"line_number":4638,"context_line":""},{"line_number":4639,"context_line":"                if not _has_access():"},{"line_number":4640,"context_line":"                    _apply_policy()"}],"source_content_type":"text/x-python","patch_set":47,"id":"6696bf35_4e9e0492","line":4637,"in_reply_to":"0ecabed7_f366c928","updated":"2024-06-05 12:48:42.000000000","message":"I still don\u0027t understand how I missed that.\nAnyway, I have fixed it and improve the associated tests.","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2c379a7666084e159ec819fbe5333563155cb30f","unresolved":true,"context_lines":[{"line_number":4634,"context_line":""},{"line_number":4635,"context_line":"            try:"},{"line_number":4636,"context_line":"                access_type \u003d \u0027ip\u0027"},{"line_number":4637,"context_line":"                access_to \u003d CONF.my_block_storage_ip"},{"line_number":4638,"context_line":""},{"line_number":4639,"context_line":"                if not _has_access():"},{"line_number":4640,"context_line":"                    _apply_policy()"}],"source_content_type":"text/x-python","patch_set":47,"id":"0ecabed7_f366c928","line":4637,"in_reply_to":"bcdae5ec_3ab53a09","updated":"2024-06-04 10:18:39.000000000","message":"I don\u0027t see the new config used here.\nAlso if this bug is not caught by the test coverage then we have a gap in the coverage.","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a0aa63313d4e2695b126764609cb2355ed3e6c9d","unresolved":true,"context_lines":[{"line_number":4634,"context_line":""},{"line_number":4635,"context_line":"            try:"},{"line_number":4636,"context_line":"                access_type \u003d \u0027ip\u0027"},{"line_number":4637,"context_line":"                access_to \u003d CONF.my_block_storage_ip"},{"line_number":4638,"context_line":""},{"line_number":4639,"context_line":"                if not _has_access():"},{"line_number":4640,"context_line":"                    _apply_policy()"}],"source_content_type":"text/x-python","patch_set":47,"id":"f4ae1b3f_695c60ec","line":4637,"in_reply_to":"bd5c1dca_45dc89f3","updated":"2024-05-23 13:03:48.000000000","message":"Agreed: Add a new option my_file_storage_ip that is defaulting to my_ip","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eecacfcdf5689068ae369e1c566e4527e0e7f40a","unresolved":false,"context_lines":[{"line_number":4634,"context_line":""},{"line_number":4635,"context_line":"            try:"},{"line_number":4636,"context_line":"                access_type \u003d \u0027ip\u0027"},{"line_number":4637,"context_line":"                access_to \u003d CONF.my_block_storage_ip"},{"line_number":4638,"context_line":""},{"line_number":4639,"context_line":"                if not _has_access():"},{"line_number":4640,"context_line":"                    _apply_policy()"}],"source_content_type":"text/x-python","patch_set":47,"id":"bcdae5ec_3ab53a09","line":4637,"in_reply_to":"f4ae1b3f_695c60ec","updated":"2024-06-03 14:42:27.000000000","message":"Done","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2b0c86adaae31b721bd7272e2e432564b4c9cf88","unresolved":true,"context_lines":[{"line_number":4677,"context_line":"                    )"},{"line_number":4678,"context_line":"                )"},{"line_number":4679,"context_line":""},{"line_number":4680,"context_line":"                return not all("},{"line_number":4681,"context_line":"                    ("},{"line_number":4682,"context_line":"                        ("},{"line_number":4683,"context_line":"                            sm.status \u003d\u003d fields.ShareMappingStatus.INACTIVE and"},{"line_number":4684,"context_line":"                            sm.instance_uuid \u003d\u003d instance_uuid"},{"line_number":4685,"context_line":"                        ) or"},{"line_number":4686,"context_line":"                        sm.status \u003d\u003d fields.ShareMappingStatus.DETACHING or"},{"line_number":4687,"context_line":"                        sm.status \u003d\u003d fields.ShareMappingStatus.ERROR"},{"line_number":4688,"context_line":"                    )"},{"line_number":4689,"context_line":"                    for sm in share_mappings"},{"line_number":4690,"context_line":"                )"},{"line_number":4691,"context_line":""},{"line_number":4692,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":47,"id":"45098001_339bc878","line":4689,"range":{"start_line":4680,"start_character":3,"end_line":4689,"end_character":44},"updated":"2024-05-22 15:01:37.000000000","message":"I think it needs explanation for me and probably for the future reader.\nSo a share is used by another instance if another instance has a share_mapping in active, inactive or attaching state. \n\nIf another instance has it in detaching state that means that instance is stopped and cannot be started again with that share so that is OK.\n\nIf another instance has it in error state then that instance is stopped but might be hard rebooted later to use the same share. Does the hard reboot will re-create the access for this share in manila if here we remove the access?","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eecacfcdf5689068ae369e1c566e4527e0e7f40a","unresolved":false,"context_lines":[{"line_number":4677,"context_line":"                    )"},{"line_number":4678,"context_line":"                )"},{"line_number":4679,"context_line":""},{"line_number":4680,"context_line":"                return not all("},{"line_number":4681,"context_line":"                    ("},{"line_number":4682,"context_line":"                        ("},{"line_number":4683,"context_line":"                            sm.status \u003d\u003d fields.ShareMappingStatus.INACTIVE and"},{"line_number":4684,"context_line":"                            sm.instance_uuid \u003d\u003d instance_uuid"},{"line_number":4685,"context_line":"                        ) or"},{"line_number":4686,"context_line":"                        sm.status \u003d\u003d fields.ShareMappingStatus.DETACHING or"},{"line_number":4687,"context_line":"                        sm.status \u003d\u003d fields.ShareMappingStatus.ERROR"},{"line_number":4688,"context_line":"                    )"},{"line_number":4689,"context_line":"                    for sm in share_mappings"},{"line_number":4690,"context_line":"                )"},{"line_number":4691,"context_line":""},{"line_number":4692,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":47,"id":"07338db8_9ac2c995","line":4689,"range":{"start_line":4680,"start_character":3,"end_line":4689,"end_character":44},"in_reply_to":"45098001_339bc878","updated":"2024-06-03 14:42:27.000000000","message":"You are right ! I have added explanations and tests.\ntest_deny_share_in_error_on_another_instance in file nova/tests/unit/compute/test_compute_mgr.py --\u003e check that another instance with share status ERROR prevent denying the share\n\ntest_deny_share_in_error in file nova/tests/unit/compute/test_compute_mgr.py --\u003e allow denying out instance if the share is in error.","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"84f7dbe56b487bc268f7d66feecc9fae47a22676","unresolved":true,"context_lines":[{"line_number":4677,"context_line":"                    )"},{"line_number":4678,"context_line":"                )"},{"line_number":4679,"context_line":""},{"line_number":4680,"context_line":"                return not all("},{"line_number":4681,"context_line":"                    ("},{"line_number":4682,"context_line":"                        ("},{"line_number":4683,"context_line":"                            sm.status \u003d\u003d fields.ShareMappingStatus.INACTIVE and"},{"line_number":4684,"context_line":"                            sm.instance_uuid \u003d\u003d instance_uuid"},{"line_number":4685,"context_line":"                        ) or"},{"line_number":4686,"context_line":"                        sm.status \u003d\u003d fields.ShareMappingStatus.DETACHING or"},{"line_number":4687,"context_line":"                        sm.status \u003d\u003d fields.ShareMappingStatus.ERROR"},{"line_number":4688,"context_line":"                    )"},{"line_number":4689,"context_line":"                    for sm in share_mappings"},{"line_number":4690,"context_line":"                )"},{"line_number":4691,"context_line":""},{"line_number":4692,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":47,"id":"b28b34e6_e7271834","line":4689,"range":{"start_line":4680,"start_character":3,"end_line":4689,"end_character":44},"in_reply_to":"45098001_339bc878","updated":"2024-05-30 12:48:20.000000000","message":"lets have a unit test proving that we don\u0027t deny a share if there is a share_mapping in ERROR.","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2b0c86adaae31b721bd7272e2e432564b4c9cf88","unresolved":true,"context_lines":[{"line_number":4743,"context_line":"                self.driver.mount_share(context, instance, share_mapping)"},{"line_number":4744,"context_line":""},{"line_number":4745,"context_line":"            except ("},{"line_number":4746,"context_line":"                exception.ShareNotFound,"},{"line_number":4747,"context_line":"                exception.ShareMountError,"},{"line_number":4748,"context_line":"            ) as e:"},{"line_number":4749,"context_line":"                self._set_share_mapping_and_instance_in_error("}],"source_content_type":"text/x-python","patch_set":47,"id":"f68be534_3f855944","line":4746,"updated":"2024-05-22 15:01:37.000000000","message":"does driver.mount_share can raise ShareNotFound?","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eecacfcdf5689068ae369e1c566e4527e0e7f40a","unresolved":false,"context_lines":[{"line_number":4743,"context_line":"                self.driver.mount_share(context, instance, share_mapping)"},{"line_number":4744,"context_line":""},{"line_number":4745,"context_line":"            except ("},{"line_number":4746,"context_line":"                exception.ShareNotFound,"},{"line_number":4747,"context_line":"                exception.ShareMountError,"},{"line_number":4748,"context_line":"            ) as e:"},{"line_number":4749,"context_line":"                self._set_share_mapping_and_instance_in_error("}],"source_content_type":"text/x-python","patch_set":47,"id":"9f4f24bf_04208d28","line":4746,"in_reply_to":"f68be534_3f855944","updated":"2024-06-03 14:42:27.000000000","message":"#4746, #4749, #4754, #4773, #4776 --\u003e does not make sens here as this is used by ceph, this is due to a rebase mistake. They have been moved.","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2b0c86adaae31b721bd7272e2e432564b4c9cf88","unresolved":true,"context_lines":[{"line_number":4746,"context_line":"                exception.ShareNotFound,"},{"line_number":4747,"context_line":"                exception.ShareMountError,"},{"line_number":4748,"context_line":"            ) as e:"},{"line_number":4749,"context_line":"                self._set_share_mapping_and_instance_in_error("},{"line_number":4750,"context_line":"                    instance, share_mapping"},{"line_number":4751,"context_line":"                )"},{"line_number":4752,"context_line":"                LOG.error(e.format_message())"}],"source_content_type":"text/x-python","patch_set":47,"id":"f943660e_8173b833","line":4749,"updated":"2024-05-22 15:01:37.000000000","message":"as far as I see both the driver.mount_share and this call sets the share_mapping to ERROR so we can remove that from the driver call.","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eecacfcdf5689068ae369e1c566e4527e0e7f40a","unresolved":false,"context_lines":[{"line_number":4746,"context_line":"                exception.ShareNotFound,"},{"line_number":4747,"context_line":"                exception.ShareMountError,"},{"line_number":4748,"context_line":"            ) as e:"},{"line_number":4749,"context_line":"                self._set_share_mapping_and_instance_in_error("},{"line_number":4750,"context_line":"                    instance, share_mapping"},{"line_number":4751,"context_line":"                )"},{"line_number":4752,"context_line":"                LOG.error(e.format_message())"}],"source_content_type":"text/x-python","patch_set":47,"id":"e6b74992_b6bba2d4","line":4749,"in_reply_to":"f943660e_8173b833","updated":"2024-06-03 14:42:27.000000000","message":"I remove the status change from the drv, to keep it only in the manager.\nBenefits I can see:\n- Status changes (vm + share) at the same place.\n- Does not break later tests that use the fake driver.","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2b0c86adaae31b721bd7272e2e432564b4c9cf88","unresolved":true,"context_lines":[{"line_number":4751,"context_line":"                )"},{"line_number":4752,"context_line":"                LOG.error(e.format_message())"},{"line_number":4753,"context_line":"                raise"},{"line_number":4754,"context_line":"            except (sdk_exc.BadRequestException) as e:"},{"line_number":4755,"context_line":"                self._set_share_mapping_and_instance_in_error("},{"line_number":4756,"context_line":"                    instance, share_mapping"},{"line_number":4757,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":47,"id":"9d105785_cfe52204","line":4754,"updated":"2024-05-22 15:01:37.000000000","message":"how does driver.mount_share can raise SDK exception? As far as I see it does not call manila.","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eecacfcdf5689068ae369e1c566e4527e0e7f40a","unresolved":false,"context_lines":[{"line_number":4751,"context_line":"                )"},{"line_number":4752,"context_line":"                LOG.error(e.format_message())"},{"line_number":4753,"context_line":"                raise"},{"line_number":4754,"context_line":"            except (sdk_exc.BadRequestException) as e:"},{"line_number":4755,"context_line":"                self._set_share_mapping_and_instance_in_error("},{"line_number":4756,"context_line":"                    instance, share_mapping"},{"line_number":4757,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":47,"id":"a9aa2d36_dc300d9d","line":4754,"in_reply_to":"9d105785_cfe52204","updated":"2024-06-03 14:42:27.000000000","message":"Done","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2b0c86adaae31b721bd7272e2e432564b4c9cf88","unresolved":true,"context_lines":[{"line_number":4770,"context_line":"                self.driver.umount_share(context, instance, share_mapping)"},{"line_number":4771,"context_line":""},{"line_number":4772,"context_line":"            except ("},{"line_number":4773,"context_line":"                exception.ShareNotFound,"},{"line_number":4774,"context_line":"                exception.ShareUmountError,"},{"line_number":4775,"context_line":"            ) as e:"},{"line_number":4776,"context_line":"                self._set_share_mapping_and_instance_in_error("}],"source_content_type":"text/x-python","patch_set":47,"id":"b318701c_465535b3","line":4773,"updated":"2024-05-22 15:01:37.000000000","message":"Can umount_share raise ShareNotFound? I don\u0027t see it where.","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eecacfcdf5689068ae369e1c566e4527e0e7f40a","unresolved":false,"context_lines":[{"line_number":4770,"context_line":"                self.driver.umount_share(context, instance, share_mapping)"},{"line_number":4771,"context_line":""},{"line_number":4772,"context_line":"            except ("},{"line_number":4773,"context_line":"                exception.ShareNotFound,"},{"line_number":4774,"context_line":"                exception.ShareUmountError,"},{"line_number":4775,"context_line":"            ) as e:"},{"line_number":4776,"context_line":"                self._set_share_mapping_and_instance_in_error("}],"source_content_type":"text/x-python","patch_set":47,"id":"a15a1cd2_af9a36e5","line":4773,"in_reply_to":"b318701c_465535b3","updated":"2024-06-03 14:42:27.000000000","message":"Done","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2b0c86adaae31b721bd7272e2e432564b4c9cf88","unresolved":true,"context_lines":[{"line_number":4773,"context_line":"                exception.ShareNotFound,"},{"line_number":4774,"context_line":"                exception.ShareUmountError,"},{"line_number":4775,"context_line":"            ) as e:"},{"line_number":4776,"context_line":"                self._set_share_mapping_and_instance_in_error("},{"line_number":4777,"context_line":"                    instance, share_mapping"},{"line_number":4778,"context_line":"                )"},{"line_number":4779,"context_line":"                LOG.error(e.format_message())"}],"source_content_type":"text/x-python","patch_set":47,"id":"467433f1_0fe3fb89","line":4776,"updated":"2024-05-22 15:01:37.000000000","message":"as both this and umount_share sets the share_mapping to ERROR so lets remove that from the umount_share call.","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eecacfcdf5689068ae369e1c566e4527e0e7f40a","unresolved":false,"context_lines":[{"line_number":4773,"context_line":"                exception.ShareNotFound,"},{"line_number":4774,"context_line":"                exception.ShareUmountError,"},{"line_number":4775,"context_line":"            ) as e:"},{"line_number":4776,"context_line":"                self._set_share_mapping_and_instance_in_error("},{"line_number":4777,"context_line":"                    instance, share_mapping"},{"line_number":4778,"context_line":"                )"},{"line_number":4779,"context_line":"                LOG.error(e.format_message())"}],"source_content_type":"text/x-python","patch_set":47,"id":"0e264705_85ab3cb2","line":4776,"in_reply_to":"467433f1_0fe3fb89","updated":"2024-06-03 14:42:27.000000000","message":"Done","commit_id":"82c996f7593f571043c933217f5456556ad79968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2c379a7666084e159ec819fbe5333563155cb30f","unresolved":true,"context_lines":[{"line_number":4712,"context_line":"                )"},{"line_number":4713,"context_line":""},{"line_number":4714,"context_line":"                access_type \u003d \u0027ip\u0027"},{"line_number":4715,"context_line":"                access_to \u003d CONF.my_block_storage_ip"},{"line_number":4716,"context_line":""},{"line_number":4717,"context_line":"                if not still_used:"},{"line_number":4718,"context_line":"                    # self.manila_api.unlock(share_mapping.share_id)"}],"source_content_type":"text/x-python","patch_set":48,"id":"696cf6ca_4f66b4e2","line":4715,"updated":"2024-06-04 10:18:39.000000000","message":"ditto, use the new config option here","commit_id":"6ad8082d44471c1ecd13e1a331595e3971edb0d1"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"0878eccb78a663fb4da9031597c23964da8b145d","unresolved":false,"context_lines":[{"line_number":4712,"context_line":"                )"},{"line_number":4713,"context_line":""},{"line_number":4714,"context_line":"                access_type \u003d \u0027ip\u0027"},{"line_number":4715,"context_line":"                access_to \u003d CONF.my_block_storage_ip"},{"line_number":4716,"context_line":""},{"line_number":4717,"context_line":"                if not still_used:"},{"line_number":4718,"context_line":"                    # self.manila_api.unlock(share_mapping.share_id)"}],"source_content_type":"text/x-python","patch_set":48,"id":"e65516f1_1294fc60","line":4715,"in_reply_to":"696cf6ca_4f66b4e2","updated":"2024-06-05 12:48:42.000000000","message":"Done","commit_id":"6ad8082d44471c1ecd13e1a331595e3971edb0d1"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"6d755ffe27e110710f37f8de43987a7dcfa2e8a4","unresolved":true,"context_lines":[{"line_number":3109,"context_line":"            instance, clean_shutdown)"},{"line_number":3110,"context_line":"        self.driver.power_off(instance, timeout, retry_interval)"},{"line_number":3111,"context_line":"        share_info.deactivate_all()"},{"line_number":3112,"context_line":"        self._umount_all_shares(context, instance, share_info)"},{"line_number":3113,"context_line":""},{"line_number":3114,"context_line":"    def _shutdown_instance(self, context, instance,"},{"line_number":3115,"context_line":"                           bdms, requested_networks\u003dNone, notify\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":50,"id":"82eda0c2_3d07f30a","line":3112,"updated":"2024-06-19 08:31:33.000000000","message":"Sean, mounting and unmounting the share is done in the manager part and not in the driver part. Can you please confirm this is ok for you.","commit_id":"980cb1eb70ff4a48e13e429f9ae509cbfa83203d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":3109,"context_line":"            instance, clean_shutdown)"},{"line_number":3110,"context_line":"        self.driver.power_off(instance, timeout, retry_interval)"},{"line_number":3111,"context_line":"        share_info.deactivate_all()"},{"line_number":3112,"context_line":"        self._umount_all_shares(context, instance, share_info)"},{"line_number":3113,"context_line":""},{"line_number":3114,"context_line":"    def _shutdown_instance(self, context, instance,"},{"line_number":3115,"context_line":"                           bdms, requested_networks\u003dNone, notify\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":50,"id":"916bf351_8b7c78d8","line":3112,"in_reply_to":"63fb2eec_86266189","updated":"2024-07-03 15:44:55.000000000","message":"Done","commit_id":"980cb1eb70ff4a48e13e429f9ae509cbfa83203d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4f490fd9fd287eac04ee6dde71911c5809db2a1c","unresolved":true,"context_lines":[{"line_number":3109,"context_line":"            instance, clean_shutdown)"},{"line_number":3110,"context_line":"        self.driver.power_off(instance, timeout, retry_interval)"},{"line_number":3111,"context_line":"        share_info.deactivate_all()"},{"line_number":3112,"context_line":"        self._umount_all_shares(context, instance, share_info)"},{"line_number":3113,"context_line":""},{"line_number":3114,"context_line":"    def _shutdown_instance(self, context, instance,"},{"line_number":3115,"context_line":"                           bdms, requested_networks\u003dNone, notify\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":50,"id":"63fb2eec_86266189","line":3112,"in_reply_to":"82eda0c2_3d07f30a","updated":"2024-06-19 14:13:04.000000000","message":"yes this shoudl be ok the hypervior sepcific details are hidden behind the virt driver api which means other virt driver could add support for this feature just by implementing those mothod in theory keeping the seperation of concerns intact","commit_id":"980cb1eb70ff4a48e13e429f9ae509cbfa83203d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":3371,"context_line":"        @utils.synchronized(instance.uuid)"},{"line_number":3372,"context_line":"        def do_stop_instance():"},{"line_number":3373,"context_line":"            current_power_state \u003d self._get_power_state(instance)"},{"line_number":3374,"context_line":""},{"line_number":3375,"context_line":"            LOG.debug(\u0027Stopping instance; current vm_state: %(vm_state)s, \u0027"},{"line_number":3376,"context_line":"                      \u0027current task_state: %(task_state)s, current DB \u0027"},{"line_number":3377,"context_line":"                      \u0027power_state: %(db_power_state)s, current VM \u0027"}],"source_content_type":"text/x-python","patch_set":51,"id":"e29f6555_78af22aa","line":3374,"updated":"2024-07-03 15:44:55.000000000","message":"unrequired but OK","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":true,"context_lines":[{"line_number":4616,"context_line":"                # a race condition mounting the share if it is not the case."},{"line_number":4617,"context_line":"                max_retries \u003d CONF.manila.share_apply_policy_timeout"},{"line_number":4618,"context_line":"                attempt_count \u003d 0"},{"line_number":4619,"context_line":"                while attempt_count \u003c max_retries:"},{"line_number":4620,"context_line":"                    if _has_access():"},{"line_number":4621,"context_line":"                        LOG.debug("},{"line_number":4622,"context_line":"                            \"Allow policy set on share %s \","}],"source_content_type":"text/x-python","patch_set":51,"id":"8085f5cf_f68f70ac","line":4619,"updated":"2024-07-03 15:44:55.000000000","message":"note for reviewers: that\u0027s an active polling but I think we\u0027re OK.","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"960b8923f4bf7076eaf03c1b359b27235e099183","unresolved":true,"context_lines":[{"line_number":4651,"context_line":"                    share_mapping, fields.ShareMappingStatus.INACTIVE"},{"line_number":4652,"context_line":"                )"},{"line_number":4653,"context_line":""},{"line_number":4654,"context_line":"            except ("},{"line_number":4655,"context_line":"                exception.ShareNotFound,"},{"line_number":4656,"context_line":"                exception.ShareAccessGrantError,"},{"line_number":4657,"context_line":"            ) as e:"}],"source_content_type":"text/x-python","patch_set":51,"id":"25486429_5a375252","line":4654,"updated":"2024-07-17 14:15:28.000000000","message":"as far as I see if nova-compute is missconfigured to use a wrong password in the [manila] section then nova gets:\n```\nkeystoneauth1.exceptions.http.Unauthorized\n```\nand that is not handled here so the share isn\u0027t put into ERROR state but remaining in attaching state.\n\n\nstack trace:\n\n```\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     _allow_share(context, instance, share_mapping)\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/data/venv/lib/python3.10/site-packages/oslo_concurrency/lockutils.py\", line 412, in inner\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     return f(*args, **kwargs)\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/nova/nova/compute/manager.py\", line 4704, in _allow_share\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     if not self.manila_api.has_access(\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/nova/nova/share/manila.py\", line 338, in has_access\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     access_to\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/nova/nova/share/manila.py\", line 126, in wrapper\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     res \u003d method(self, *args, **kwargs)\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/nova/nova/share/manila.py\", line 144, in wrapper\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     res \u003d method(self, share_id, *args, **kwargs)\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/nova/nova/share/manila.py\", line 234, in get_access\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     access.access_type \u003d\u003d access_type and\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/nova/nova/share/manila.py\", line 42, in manilaclient\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     return utils.get_sdk_adapter(\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/nova/nova/utils.py\", line 1002, in get_sdk_adapter\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     return getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027))\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/openstacksdk/openstack/service_description.py\", line 89, in __get__\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     proxy \u003d self._make_proxy(instance)\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/openstacksdk/openstack/service_description.py\", line 289, in _make_proxy\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     found_version \u003d temp_adapter.get_api_major_version()\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/data/venv/lib/python3.10/site-packages/keystoneauth1/adapter.py\", line 352, in get_api_major_version\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     return self.session.get_api_major_version(auth or self.auth, **kwargs)\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/data/venv/lib/python3.10/site-packages/keystoneauth1/session.py\", line 1289, in get_api_major_version\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     return auth.get_api_major_version(self, **kwargs)\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/data/venv/lib/python3.10/site-packages/keystoneauth1/identity/base.py\", line 497, in get_api_major_version\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     data \u003d get_endpoint_data(discover_versions\u003ddiscover_versions)\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/data/venv/lib/python3.10/site-packages/keystoneauth1/identity/base.py\", line 268, in get_endpoint_data\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     service_catalog \u003d self.get_access(session).service_catalog\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/data/venv/lib/python3.10/site-packages/keystoneauth1/identity/base.py\", line 131, in get_access\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     self.auth_ref \u003d self.get_auth_ref(session)\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/data/venv/lib/python3.10/site-packages/keystoneauth1/identity/generic/base.py\", line 205, in get_auth_ref\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     return self._plugin.get_auth_ref(session, **kwargs)\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/data/venv/lib/python3.10/site-packages/keystoneauth1/identity/v3/base.py\", line 185, in get_auth_ref\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     resp \u003d session.post(token_url, json\u003dbody, headers\u003dheaders,\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/data/venv/lib/python3.10/site-packages/keystoneauth1/session.py\", line 1162, in post\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     return self.request(url, \u0027POST\u0027, **kwargs)\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/data/venv/lib/python3.10/site-packages/keystoneauth1/session.py\", line 985, in request\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server     raise exceptions.from_response(resp, method, url)\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server keystoneauth1.exceptions.http.Unauthorized: The request you have made requires authentication. (HTTP 401) (Request-ID: req-e22152e0-487a-4637-9ba5-3bcbbed39dcf)\nJul 17 13:57:35 gibi-devstack-aio-jammy nova-compute[1588812]: ERROR oslo_messaging.rpc.server \n```\n\n\nand then listing the shares mapping state shows attaching:\n\n\n```\nstack@gibi-devstack-aio-jammy:~$ curl -g -i -X GET http://10.0.76.222/compute/v2.1/servers/$VM/shares -H \"Accept: application/json\" -H \"Content-Type: application/json\" -H \"X-Auth-Token: $TOKEN\" -H \"X-OpenStack-Nova-API-Version: 2.97\"\nHTTP/1.1 200 OK\nDate: Wed, 17 Jul 2024 14:06:33 GMT\nServer: Apache/2.4.52 (Ubuntu)\nContent-Length: 136\nContent-Type: application/json\nOpenStack-API-Version: compute 2.97\nX-OpenStack-Nova-API-Version: 2.97\nVary: OpenStack-API-Version,X-OpenStack-Nova-API-Version\nx-openstack-request-id: req-98775e27-0233-4ee1-9c13-f93d88ea1f7e\nx-compute-request-id: req-98775e27-0233-4ee1-9c13-f93d88ea1f7e\nConnection: close\n\n{\"shares\": [{\"share_id\": \"468844d5-9edb-4741-b380-f2b4db6a453a\", \"status\": \"attaching\", \"tag\": \"468844d5-9edb-4741-b380-f2b4db6a453a\"}]}\n```","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f8f82329856db8a814aba0c4d9350ecd2def9b47","unresolved":false,"context_lines":[{"line_number":4651,"context_line":"                    share_mapping, fields.ShareMappingStatus.INACTIVE"},{"line_number":4652,"context_line":"                )"},{"line_number":4653,"context_line":""},{"line_number":4654,"context_line":"            except ("},{"line_number":4655,"context_line":"                exception.ShareNotFound,"},{"line_number":4656,"context_line":"                exception.ShareAccessGrantError,"},{"line_number":4657,"context_line":"            ) as e:"}],"source_content_type":"text/x-python","patch_set":51,"id":"60726343_5addc5d3","line":4654,"in_reply_to":"25486429_5a375252","updated":"2024-08-26 14:51:09.000000000","message":"Done","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7a4da4a974eda4d820846f8cdfd2c896fab59d98","unresolved":true,"context_lines":[{"line_number":4732,"context_line":""},{"line_number":4733,"context_line":"                share_mapping.delete()"},{"line_number":4734,"context_line":""},{"line_number":4735,"context_line":"            except ("},{"line_number":4736,"context_line":"                exception.ShareNotFound,"},{"line_number":4737,"context_line":"                exception.ShareAccessNotFound,"},{"line_number":4738,"context_line":"                exception.ShareAccessRemovalError,"}],"source_content_type":"text/x-python","patch_set":51,"id":"ce30aef6_54b07c73","line":4735,"updated":"2024-07-17 14:26:34.000000000","message":"ditto we need to handle keystoneauth1.exceptions.http.Unauthorized","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f8f82329856db8a814aba0c4d9350ecd2def9b47","unresolved":false,"context_lines":[{"line_number":4732,"context_line":""},{"line_number":4733,"context_line":"                share_mapping.delete()"},{"line_number":4734,"context_line":""},{"line_number":4735,"context_line":"            except ("},{"line_number":4736,"context_line":"                exception.ShareNotFound,"},{"line_number":4737,"context_line":"                exception.ShareAccessNotFound,"},{"line_number":4738,"context_line":"                exception.ShareAccessRemovalError,"}],"source_content_type":"text/x-python","patch_set":51,"id":"690adfd6_740059c6","line":4735,"in_reply_to":"ce30aef6_54b07c73","updated":"2024-08-26 14:51:09.000000000","message":"Done","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7112c1805c299a0131931104f2e8ea6cf9961019","unresolved":true,"context_lines":[{"line_number":4733,"context_line":"                share_mapping.delete()"},{"line_number":4734,"context_line":""},{"line_number":4735,"context_line":"            except ("},{"line_number":4736,"context_line":"                exception.ShareNotFound,"},{"line_number":4737,"context_line":"                exception.ShareAccessNotFound,"},{"line_number":4738,"context_line":"                exception.ShareAccessRemovalError,"},{"line_number":4739,"context_line":"            ) as e:"},{"line_number":4740,"context_line":"                self._set_share_mapping_status("}],"source_content_type":"text/x-python","patch_set":51,"id":"96b6527d_e03935b3","line":4737,"range":{"start_line":4736,"start_character":0,"end_line":4737,"end_character":46},"updated":"2024-07-17 15:17:29.000000000","message":"In this cases there is nothing to remove from manila so we should not stop deny_share we can simply say that the access is already gone so we can ignore the error and delete the mapping.\n\nActually this can cause a share_mapping to stuck in error forever, preventing it to detach. I had a share_mapping that was in detaching state (due to the unauthorized issue from above, but even if that is fixed and the mapping is in error) without ever having an access successfully created in manila. When the next detach is requested that fails as it does not found the access to remove.","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f8f82329856db8a814aba0c4d9350ecd2def9b47","unresolved":false,"context_lines":[{"line_number":4733,"context_line":"                share_mapping.delete()"},{"line_number":4734,"context_line":""},{"line_number":4735,"context_line":"            except ("},{"line_number":4736,"context_line":"                exception.ShareNotFound,"},{"line_number":4737,"context_line":"                exception.ShareAccessNotFound,"},{"line_number":4738,"context_line":"                exception.ShareAccessRemovalError,"},{"line_number":4739,"context_line":"            ) as e:"},{"line_number":4740,"context_line":"                self._set_share_mapping_status("}],"source_content_type":"text/x-python","patch_set":51,"id":"4c0dd4cf_696ce061","line":4737,"range":{"start_line":4736,"start_character":0,"end_line":4737,"end_character":46},"in_reply_to":"02037580_136f7b62","updated":"2024-08-26 14:51:09.000000000","message":"Done","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e850b76c6e0f6dffee29f8dc8128359038d0dec6","unresolved":true,"context_lines":[{"line_number":4733,"context_line":"                share_mapping.delete()"},{"line_number":4734,"context_line":""},{"line_number":4735,"context_line":"            except ("},{"line_number":4736,"context_line":"                exception.ShareNotFound,"},{"line_number":4737,"context_line":"                exception.ShareAccessNotFound,"},{"line_number":4738,"context_line":"                exception.ShareAccessRemovalError,"},{"line_number":4739,"context_line":"            ) as e:"},{"line_number":4740,"context_line":"                self._set_share_mapping_status("}],"source_content_type":"text/x-python","patch_set":51,"id":"02037580_136f7b62","line":4737,"range":{"start_line":4736,"start_character":0,"end_line":4737,"end_character":46},"in_reply_to":"083acfd3_468957f2","updated":"2024-07-25 14:29:11.000000000","message":"agreed","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1aa1b6ef48a1ab007c049f39ab9a9dbe8c52cbd0","unresolved":true,"context_lines":[{"line_number":4733,"context_line":"                share_mapping.delete()"},{"line_number":4734,"context_line":""},{"line_number":4735,"context_line":"            except ("},{"line_number":4736,"context_line":"                exception.ShareNotFound,"},{"line_number":4737,"context_line":"                exception.ShareAccessNotFound,"},{"line_number":4738,"context_line":"                exception.ShareAccessRemovalError,"},{"line_number":4739,"context_line":"            ) as e:"},{"line_number":4740,"context_line":"                self._set_share_mapping_status("}],"source_content_type":"text/x-python","patch_set":51,"id":"083acfd3_468957f2","line":4737,"range":{"start_line":4736,"start_character":0,"end_line":4737,"end_character":46},"in_reply_to":"96b6527d_e03935b3","updated":"2024-07-17 15:21:17.000000000","message":"at this poin the only way out is to delete the VM as the share cannot be detached.","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"afac1e5ff4eec703f49a5062b2db2ed1f4a9efe9","unresolved":true,"context_lines":[{"line_number":4643,"context_line":"                access_to \u003d CONF.my_shared_fs_storage_ip"},{"line_number":4644,"context_line":""},{"line_number":4645,"context_line":"                if not _has_access():"},{"line_number":4646,"context_line":"                    _apply_policy()"},{"line_number":4647,"context_line":"                    _wait_policy_to_be_applied()"},{"line_number":4648,"context_line":""},{"line_number":4649,"context_line":"                # Set the share from attaching to inactive"}],"source_content_type":"text/x-python","patch_set":52,"id":"22e65d5d_7ca1bdc9","line":4646,"updated":"2024-07-31 11:48:26.000000000","message":"The locking still does not work for me. I can still delete a the share in manila while it is being used by a nova VM.\n```\nstack@gibi-devstack-aio-jammy:~/manila$ openstack share list\n+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+------+-------------------+\n| ID                                   | Name | Size | Share Proto | Status    | Is Public | Share Type Name | Host | Availability Zone |\n+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+------+-------------------+\n| a01c299b-c38f-49a3-90f6-3e49319953b1 | None |    1 | NFS         | available | False     | default         |      | manila-zone-0     |\n+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+------+-------------------+\nstack@gibi-devstack-aio-jammy:~/manila$ curl -g -i -POST X http://10.0.76.222/compute/v2.1/servers/$VM/shastack@gibi-devstack-aio-jammy:~/manila$ curl -g -i -POST X http://10.0.76.222/compute/v2.1/servers/$VM/shares -H \"Accept: application/json\" -H \"Content-Type: application/json\" -H \"X-Auth-Token: $TOKEN\" -H \"X-OpenStack-Nova-API-Version: 2.97\" -d \u0027{\"share\": {\"share_id\":\"a01c299b-c38f-49a3-90f6-3e49319953b1\"}}\u0027         curl: (6) Could not resolve host: X\nHTTP/1.1 201 Created\nDate: Wed, 31 Jul 2024 11:35:32 GMT\nServer: Apache/2.4.52 (Ubuntu)\nContent-Length: 133\nContent-Type: application/json\nOpenStack-API-Version: compute 2.97\nX-OpenStack-Nova-API-Version: 2.97\nVary: OpenStack-API-Version,X-OpenStack-Nova-API-Version\nx-openstack-request-id: req-f2b152ea-65b1-4edc-8e05-6082c5a83469\nx-compute-request-id: req-f2b152ea-65b1-4edc-8e05-6082c5a83469\nConnection: close\n\nstack@gibi-devstack-aio-jammy:~/manila$ curl -g -i -X GET http://10.0.76.222/compute/v2.1/servers/$VM/shares -H \"Accept: application/json\" -H \"Content-Type: application/json\" -H \"X-Auth-Token: $TOKEN\" -H \"X-OpenStack-Nova-API-Version: 2.97\"\nHTTP/1.1 200 OK\nDate: Wed, 31 Jul 2024 11:36:08 GMT\nServer: Apache/2.4.52 (Ubuntu)\nContent-Length: 135\nContent-Type: application/json\nOpenStack-API-Version: compute 2.97\nX-OpenStack-Nova-API-Version: 2.97\nVary: OpenStack-API-Version,X-OpenStack-Nova-API-Version\nx-openstack-request-id: req-d1a17990-20bc-4168-8051-141a15943847\nx-compute-request-id: req-d1a17990-20bc-4168-8051-141a15943847\nConnection: close\n\n{\"shares\": [{\"share_id\": \"a01c299b-c38f-49a3-90f6-3e49319953b1\", \"status\": \"inactive\", \"tag\": \"a01c299b-c38f-49a3-90f6-3e49319953b1\"}]}stack@gibi-devstack-aio-jammy:~/manila$ \nstack@gibi-devstack-aio-jammy:~/manila$ \nstack@gibi-devstack-aio-jammy:~/manila$ openstack share list\n+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+------+-------------------+\n| ID                                   | Name | Size | Share Proto | Status    | Is Public | Share Type Name | Host | Availability Zone |\n+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+------+-------------------+\n| a01c299b-c38f-49a3-90f6-3e49319953b1 | None |    1 | NFS         | available | False     | default         |      | manila-zone-0     |\n+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+------+-------------------+\nstack@gibi-devstack-aio-jammy:~/manila$ openstack share show a01c299b-c38f-49a3-90f6-3e49319953b1\n+---------------------------------------+------------------------------------------------------------------------------------------+\n| Field                                 | Value                                                                                    |\n+---------------------------------------+------------------------------------------------------------------------------------------+\n| access_rules_status                   | active                                                                                   |\n| availability_zone                     | manila-zone-0                                                                            |\n| create_share_from_snapshot_support    | True                                                                                     |\n| created_at                            | 2024-07-31T11:30:48.834173                                                               |\n| description                           | None                                                                                     |\n| export_locations                      |                                                                                          |\n|                                       | id \u003d 28d61fae-c8c2-48b0-89e7-7548f0904963                                                |\n|                                       | path \u003d 10.0.76.222:/opt/stack/data/manila/mnt/share-9de37abb-fc1c-4386-a679-7c6c24f99074 |\n|                                       | preferred \u003d False                                                                        |\n| has_replicas                          | False                                                                                    |\n| id                                    | a01c299b-c38f-49a3-90f6-3e49319953b1                                                     |\n| is_public                             | False                                                                                    |\n| is_soft_deleted                       | False                                                                                    |\n| mount_snapshot_support                | True                                                                                     |\n| name                                  | None                                                                                     |\n| progress                              | 100%                                                                                     |\n| project_id                            | e20ffcd42d424a739fa224589aa0fa06                                                         |\n| properties                            |                                                                                          |\n| replication_type                      | None                                                                                     |\n| revert_to_snapshot_support            | True                                                                                     |\n| scheduled_to_be_deleted_at            | None                                                                                     |\n| share_group_id                        | None                                                                                     |\n| share_network_id                      | None                                                                                     |\n| share_proto                           | NFS                                                                                      |\n| share_type                            | d68b6837-a6b0-452b-947e-0ec4e0f999fc                                                     |\n| share_type_name                       | default                                                                                  |\n| size                                  | 1                                                                                        |\n| snapshot_id                           | None                                                                                     |\n| snapshot_support                      | True                                                                                     |\n| source_backup_id                      | None                                                                                     |\n| source_share_group_snapshot_member_id | None                                                                                     |\n| status                                | available                                                                                |\n| task_state                            | None                                                                                     |\n| user_id                               | f1bff943dae94122a196e67a5fc0b276                                                         |\n| volume_type                           | default                                                                                  |\n+---------------------------------------+------------------------------------------------------------------------------------------+\nstack@gibi-devstack-aio-jammy:~/manila$ openstack server start vm3\nstack@gibi-devstack-aio-jammy:~/manila$ openstack share list\n+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+------+-------------------+\n| ID                                   | Name | Size | Share Proto | Status    | Is Public | Share Type Name | Host | Availability Zone |\n+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+------+-------------------+\n| a01c299b-c38f-49a3-90f6-3e49319953b1 | None |    1 | NFS         | available | False     | default         |      | manila-zone-0     |\n+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+------+-------------------+\n\nstack@gibi-devstack-aio-jammy:~/manila$ \nstack@gibi-devstack-aio-jammy:~/manila$ \nstack@gibi-devstack-aio-jammy:~/manila$ openstack server list\n+-----------------------------------+------+--------+-----------------------------------+-------+--------+\n| ID                                | Name | Status | Networks                          | Image | Flavor |\n+-----------------------------------+------+--------+-----------------------------------+-------+--------+\n| 820d2e03-75d3-4353-a528-          | vm3  | ACTIVE | private\u003d10.0.0.54, fd0f:3f0e:dd79 | jammy | ds1G   |\n| 3a9551aa8287                      |      |        | :0:f816:3eff:fe18:7c73            |       |        |\n+-----------------------------------+------+--------+-----------------------------------+-------+--------+\nstack@gibi-devstack-aio-jammy:~/manila$ openstack share delete a01c299b-c38f-49a3-90f6-3e49319953b1\nstack@gibi-devstack-aio-jammy:~/manila$ openstack share show a01c299b-c38f-49a3-90f6-3e49319953b1\nNo share with a name or ID of \u0027a01c299b-c38f-49a3-90f6-3e49319953b1\u0027 exists.\nstack@gibi-devstack-aio-jammy:~/manila$ openstack server list\n+--------------------------------------+------+--------+---------------------------------------------------------+-------+--------+\n| ID                                   | Name | Status | Networks                                                | Image | Flavor |\n+--------------------------------------+------+--------+---------------------------------------------------------+-------+--------+\n| 820d2e03-75d3-4353-a528-3a9551aa8287 | vm3  | ACTIVE | private\u003d10.0.0.54, fd0f:3f0e:dd79:0:f816:3eff:fe18:7c73 | jammy | ds1G   |\n+--------------------------------------+------+--------+---------------------------------------------------------+-------+--------+\nstack@gibi-devstack-aio-jammy:~/manila$ \nstack@gibi-devstack-aio-jammy:~/manila$ \nstack@gibi-devstack-aio-jammy:~/manila$ curl -g -i -X GET http://10.0.76.222/compute/v2.1/servers/$VM/shares -H \"Accept: application/json\" -H \"Content-Type: application/json\" -H \"X-Auth-Token: $TOKEN\" -H \"X-OpenStack-Nova-API-Version: 2.97\"\nHTTP/1.1 200 OK\nDate: Wed, 31 Jul 2024 11:40:35 GMT\nServer: Apache/2.4.52 (Ubuntu)\nContent-Length: 133\nContent-Type: application/json\nOpenStack-API-Version: compute 2.97\nX-OpenStack-Nova-API-Version: 2.97\nVary: OpenStack-API-Version,X-OpenStack-Nova-API-Version\nx-openstack-request-id: req-346d2a81-a606-4e8a-bf9e-0e670338a07e\nx-compute-request-id: req-346d2a81-a606-4e8a-bf9e-0e670338a07e\nConnection: close\n\n{\"shares\": [{\"share_id\": \"a01c299b-c38f-49a3-90f6-3e49319953b1\", \"status\": \"active\", \"tag\": \"a01c299b-c38f-49a3-90f6-3e49319953b1\"}]}stack@gibi-devstack-aio-jammy:~/manila$ \nstack@gibi-devstack-aio-jammy:~/manila$ \nstack@gibi-devstack-aio-jammy:~/manila$ openstack server delete vm3\nstack@gibi-devstack-aio-jammy:~/manila$ openstack server list\n\nstack@gibi-devstack-aio-jammy:~/manila$\n```","commit_id":"d7b20146398687408ed5989b684b90648d45872c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"18a9c674c2d0b92c12f18da140e16bc8d1216616","unresolved":true,"context_lines":[{"line_number":4643,"context_line":"                access_to \u003d CONF.my_shared_fs_storage_ip"},{"line_number":4644,"context_line":""},{"line_number":4645,"context_line":"                if not _has_access():"},{"line_number":4646,"context_line":"                    _apply_policy()"},{"line_number":4647,"context_line":"                    _wait_policy_to_be_applied()"},{"line_number":4648,"context_line":""},{"line_number":4649,"context_line":"                # Set the share from attaching to inactive"}],"source_content_type":"text/x-python","patch_set":52,"id":"45ed76e3_93abda78","line":4646,"in_reply_to":"22e65d5d_7ca1bdc9","updated":"2024-08-01 01:33:47.000000000","message":"After attach a share with a vm, lock the share to prevent it from being deleted. \nafter detach share or delete vm, should delete the share lock.\nthe document link:\nhttps://docs.openstack.org/api-ref/shared-file-system/#create-a-resource-lock\nhttps://review.opendev.org/c/openstack/manila/+/887115","commit_id":"d7b20146398687408ed5989b684b90648d45872c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a6ac61461d468926001eef32a3a5a40cee7eeabc","unresolved":true,"context_lines":[{"line_number":4643,"context_line":"                access_to \u003d CONF.my_shared_fs_storage_ip"},{"line_number":4644,"context_line":""},{"line_number":4645,"context_line":"                if not _has_access():"},{"line_number":4646,"context_line":"                    _apply_policy()"},{"line_number":4647,"context_line":"                    _wait_policy_to_be_applied()"},{"line_number":4648,"context_line":""},{"line_number":4649,"context_line":"                # Set the share from attaching to inactive"}],"source_content_type":"text/x-python","patch_set":52,"id":"631f8c06_07b11053","line":4646,"in_reply_to":"45ed76e3_93abda78","updated":"2024-08-01 03:45:25.000000000","message":"889519: Resource locks and access rules restrictions | https://review.opendev.org/c/openstack/openstacksdk/+/889519\n\nresource lock feature add been added to openstacksdk.\nwe can define an function in nova/share/manila.py to call\nclient.create_resource_lock(resource_id\u003dshare_id, resource_type\u003d\u0027share\u0027)","commit_id":"d7b20146398687408ed5989b684b90648d45872c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f28a73c7ff5b43af0f76bfdc9c07f3d58cc67781","unresolved":false,"context_lines":[{"line_number":4643,"context_line":"                access_to \u003d CONF.my_shared_fs_storage_ip"},{"line_number":4644,"context_line":""},{"line_number":4645,"context_line":"                if not _has_access():"},{"line_number":4646,"context_line":"                    _apply_policy()"},{"line_number":4647,"context_line":"                    _wait_policy_to_be_applied()"},{"line_number":4648,"context_line":""},{"line_number":4649,"context_line":"                # Set the share from attaching to inactive"}],"source_content_type":"text/x-python","patch_set":52,"id":"56c981b5_dbdbf189","line":4646,"in_reply_to":"50f80079_9908025e","updated":"2024-08-28 10:47:26.000000000","message":"I verified. After https://review.opendev.org/c/openstack/manila/+/926491 the locking works as expected. We need to get https://review.opendev.org/c/openstack/manila/+/926491 landed.","commit_id":"d7b20146398687408ed5989b684b90648d45872c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1b54d6296e557859e8f6686eae8a5c773a2bdf19","unresolved":true,"context_lines":[{"line_number":4643,"context_line":"                access_to \u003d CONF.my_shared_fs_storage_ip"},{"line_number":4644,"context_line":""},{"line_number":4645,"context_line":"                if not _has_access():"},{"line_number":4646,"context_line":"                    _apply_policy()"},{"line_number":4647,"context_line":"                    _wait_policy_to_be_applied()"},{"line_number":4648,"context_line":""},{"line_number":4649,"context_line":"                # Set the share from attaching to inactive"}],"source_content_type":"text/x-python","patch_set":52,"id":"6b20be52_e076465f","line":4646,"in_reply_to":"5599d400_b9ca3bf7","updated":"2024-08-20 01:30:02.000000000","message":"also need to create share lock or access rule lock after create access rule for nova compute host.","commit_id":"d7b20146398687408ed5989b684b90648d45872c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a7c24feb3bcdcba09a04730d9525ffb3a4ef422a","unresolved":false,"context_lines":[{"line_number":4643,"context_line":"                access_to \u003d CONF.my_shared_fs_storage_ip"},{"line_number":4644,"context_line":""},{"line_number":4645,"context_line":"                if not _has_access():"},{"line_number":4646,"context_line":"                    _apply_policy()"},{"line_number":4647,"context_line":"                    _wait_policy_to_be_applied()"},{"line_number":4648,"context_line":""},{"line_number":4649,"context_line":"                # Set the share from attaching to inactive"}],"source_content_type":"text/x-python","patch_set":52,"id":"c06facb3_553bb675","line":4646,"in_reply_to":"56c981b5_dbdbf189","updated":"2024-08-29 01:24:31.000000000","message":"The patch above helps users automatically create a share lock when creating an access rule lock. The share lock is not automatically added after an access rule is created. So nova still needs to call the create access rule lock or create share lock interface of manila.","commit_id":"d7b20146398687408ed5989b684b90648d45872c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"cdafca33c627fa5ae0a2396f22875aa3d907033b","unresolved":true,"context_lines":[{"line_number":4643,"context_line":"                access_to \u003d CONF.my_shared_fs_storage_ip"},{"line_number":4644,"context_line":""},{"line_number":4645,"context_line":"                if not _has_access():"},{"line_number":4646,"context_line":"                    _apply_policy()"},{"line_number":4647,"context_line":"                    _wait_policy_to_be_applied()"},{"line_number":4648,"context_line":""},{"line_number":4649,"context_line":"                # Set the share from attaching to inactive"}],"source_content_type":"text/x-python","patch_set":52,"id":"5599d400_b9ca3bf7","line":4646,"in_reply_to":"631f8c06_07b11053","updated":"2024-08-19 09:50:37.000000000","message":"926491: Lock shares when creating a locked access rule | https://review.opendev.org/c/openstack/manila/+/926491\n\nThe above patch will ensure that the share will not be deleted when it is used by the nova vm.\nAnd do not need to create a resource lock","commit_id":"d7b20146398687408ed5989b684b90648d45872c"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f8f82329856db8a814aba0c4d9350ecd2def9b47","unresolved":true,"context_lines":[{"line_number":4643,"context_line":"                access_to \u003d CONF.my_shared_fs_storage_ip"},{"line_number":4644,"context_line":""},{"line_number":4645,"context_line":"                if not _has_access():"},{"line_number":4646,"context_line":"                    _apply_policy()"},{"line_number":4647,"context_line":"                    _wait_policy_to_be_applied()"},{"line_number":4648,"context_line":""},{"line_number":4649,"context_line":"                # Set the share from attaching to inactive"}],"source_content_type":"text/x-python","patch_set":52,"id":"50f80079_9908025e","line":4646,"in_reply_to":"6b20be52_e076465f","updated":"2024-08-26 14:51:09.000000000","message":"It will be addressed on manila side by https://review.opendev.org/c/openstack/manila/+/926491","commit_id":"d7b20146398687408ed5989b684b90648d45872c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e850b76c6e0f6dffee29f8dc8128359038d0dec6","unresolved":true,"context_lines":[{"line_number":4734,"context_line":""},{"line_number":4735,"context_line":"            except ("},{"line_number":4736,"context_line":"                exception.ShareNotFound,"},{"line_number":4737,"context_line":"                exception.ShareAccessNotFound,"},{"line_number":4738,"context_line":"                exception.ShareAccessRemovalError,"},{"line_number":4739,"context_line":"            ) as e:"},{"line_number":4740,"context_line":"                self._set_share_mapping_status("}],"source_content_type":"text/x-python","patch_set":52,"id":"472b6d29_416075d8","line":4737,"updated":"2024-07-25 14:29:11.000000000","message":"see gibi\u0027s questions on #51 version","commit_id":"d7b20146398687408ed5989b684b90648d45872c"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f8f82329856db8a814aba0c4d9350ecd2def9b47","unresolved":false,"context_lines":[{"line_number":4734,"context_line":""},{"line_number":4735,"context_line":"            except ("},{"line_number":4736,"context_line":"                exception.ShareNotFound,"},{"line_number":4737,"context_line":"                exception.ShareAccessNotFound,"},{"line_number":4738,"context_line":"                exception.ShareAccessRemovalError,"},{"line_number":4739,"context_line":"            ) as e:"},{"line_number":4740,"context_line":"                self._set_share_mapping_status("}],"source_content_type":"text/x-python","patch_set":52,"id":"dfbbd271_bf0e2d99","line":4737,"in_reply_to":"472b6d29_416075d8","updated":"2024-08-26 14:51:09.000000000","message":"Done","commit_id":"d7b20146398687408ed5989b684b90648d45872c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b04cc170591201f12f7ff7b3fcee67a21d965bc6","unresolved":true,"context_lines":[{"line_number":4734,"context_line":"                share_mapping.delete()"},{"line_number":4735,"context_line":""},{"line_number":4736,"context_line":"            except ("},{"line_number":4737,"context_line":"                keystone_exception.http.Unauthorized"},{"line_number":4738,"context_line":"            ) as e:"},{"line_number":4739,"context_line":"                self._set_share_mapping_status("},{"line_number":4740,"context_line":"                    share_mapping, fields.ShareMappingStatus.ERROR"}],"source_content_type":"text/x-python","patch_set":54,"id":"0e619665_9ce25bb1","line":4737,"updated":"2024-08-28 12:54:31.000000000","message":"if manila-api is down during instance delete (i.e. it the service stopped in devstack) then nova gets:\n\n```\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]     self.manila_api.deny(\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]   File \"/opt/stack/nova/nova/share/manila.py\", line 128, in wrapper\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]     res \u003d method(self, *args, **kwargs)\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]   File \"/opt/stack/nova/nova/share/manila.py\", line 180, in wrapper\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]     res \u003d method(self, *args, **kwargs)\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]   File \"/opt/stack/nova/nova/share/manila.py\", line 316, in deny\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]     client \u003d _manilaclient(context, True)\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]   File \"/opt/stack/nova/nova/share/manila.py\", line 42, in _manilaclient\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]     return utils.get_sdk_adapter(\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]   File \"/opt/stack/nova/nova/utils.py\", line 1033, in get_sdk_adapter\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]     return getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027))\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]   File \"/opt/stack/openstacksdk/openstack/service_description.py\", line 110, in __get__\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]     self._validate_proxy(proxy, endpoint)\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]   File \"/opt/stack/openstacksdk/openstack/service_description.py\", line 136, in _validate_proxy\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782]     raise exceptions.ServiceDiscoveryException(\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782] openstack.exceptions.ServiceDiscoveryException: Failed to create a working proxy for service shared-file-system: No valid endpoint was discoverable.\nAug 28 11:50:06 gibi-devstack-aio-jammy nova-compute[1820772]: ERROR nova.compute.manager [instance: f455b768-99b5-4280-8778-fafd5a58d782] \n```\n\nThe instance will be put into ERROR. When manila-api is recovered the user can retry the instance delete and it will succeed. So for completeness we should put the share into ERROR for this case too.","commit_id":"d0d56b0bd76dd8c2253e576fb527d04e006552fb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a7c24feb3bcdcba09a04730d9525ffb3a4ef422a","unresolved":true,"context_lines":[{"line_number":4734,"context_line":"                share_mapping.delete()"},{"line_number":4735,"context_line":""},{"line_number":4736,"context_line":"            except ("},{"line_number":4737,"context_line":"                keystone_exception.http.Unauthorized"},{"line_number":4738,"context_line":"            ) as e:"},{"line_number":4739,"context_line":"                self._set_share_mapping_status("},{"line_number":4740,"context_line":"                    share_mapping, fields.ShareMappingStatus.ERROR"}],"source_content_type":"text/x-python","patch_set":54,"id":"6a6a3940_18fcba33","line":4737,"in_reply_to":"0e619665_9ce25bb1","updated":"2024-08-29 01:24:31.000000000","message":"1: When instance is in the error state and manila-api is still down, share cannot be set to error.\n2: When the manila api was restored, the user successfully deleted the instance in the error state. Then manila will also be invoked to delete the corresponding access rule. At this point, share has nothing to do with the deleted instance, so why set share to error?\n\nSo, in my opinion, Don\u0027t have to set share to error","commit_id":"d0d56b0bd76dd8c2253e576fb527d04e006552fb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"38ea47ec62e0b673a7176e97eecb85d42550f584","unresolved":true,"context_lines":[{"line_number":4734,"context_line":"                share_mapping.delete()"},{"line_number":4735,"context_line":""},{"line_number":4736,"context_line":"            except ("},{"line_number":4737,"context_line":"                keystone_exception.http.Unauthorized"},{"line_number":4738,"context_line":"            ) as e:"},{"line_number":4739,"context_line":"                self._set_share_mapping_status("},{"line_number":4740,"context_line":"                    share_mapping, fields.ShareMappingStatus.ERROR"}],"source_content_type":"text/x-python","patch_set":54,"id":"90253852_05269cd6","line":4737,"in_reply_to":"6a6a3940_18fcba33","updated":"2024-09-11 09:31:54.000000000","message":"sorry for my wording I meant put the *share_mapping* on the nova side into ERROR.","commit_id":"d0d56b0bd76dd8c2253e576fb527d04e006552fb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"999ab040a39bf66615c3fc1eecb31673e9bab38b","unresolved":true,"context_lines":[{"line_number":4734,"context_line":"                share_mapping.delete()"},{"line_number":4735,"context_line":""},{"line_number":4736,"context_line":"            except ("},{"line_number":4737,"context_line":"                keystone_exception.http.Unauthorized"},{"line_number":4738,"context_line":"            ) as e:"},{"line_number":4739,"context_line":"                self._set_share_mapping_status("},{"line_number":4740,"context_line":"                    share_mapping, fields.ShareMappingStatus.ERROR"}],"source_content_type":"text/x-python","patch_set":54,"id":"ac62392f_28894f58","line":4737,"in_reply_to":"6cfe9c8a_8001bca3","updated":"2024-11-05 12:57:36.000000000","message":"This is still open in PS59, I was able to reproduce.","commit_id":"d0d56b0bd76dd8c2253e576fb527d04e006552fb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7ff89e6789345e9d2803a84c0f7482df9bc7ff03","unresolved":true,"context_lines":[{"line_number":4734,"context_line":"                share_mapping.delete()"},{"line_number":4735,"context_line":""},{"line_number":4736,"context_line":"            except ("},{"line_number":4737,"context_line":"                keystone_exception.http.Unauthorized"},{"line_number":4738,"context_line":"            ) as e:"},{"line_number":4739,"context_line":"                self._set_share_mapping_status("},{"line_number":4740,"context_line":"                    share_mapping, fields.ShareMappingStatus.ERROR"}],"source_content_type":"text/x-python","patch_set":54,"id":"6cfe9c8a_8001bca3","line":4737,"in_reply_to":"90253852_05269cd6","updated":"2024-10-11 11:34:30.000000000","message":"this is still open, the instance is put into ERROR as before (OK) but the share_mapping goes to inactive instead of error (NOK).\n\nsubsequent share detach keeps the share_mapping in inactive as well (OK if we keep it in error).\n\nhowever susequent hard reboot fails with \n\n```\nOct 11 11:28:52 gibi-devstack-aio-jammy nova-compute[2499505]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/nova/nova/virt/libvirt/driver.py\", line 4019, in reboot\nOct 11 11:28:52 gibi-devstack-aio-jammy nova-compute[2499505]: ERROR oslo_messaging.rpc.server     return self._hard_reboot(context, instance, network_info,\nOct 11 11:28:52 gibi-devstack-aio-jammy nova-compute[2499505]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/nova/nova/virt/libvirt/driver.py\", line 4136, in _hard_reboot\nOct 11 11:28:52 gibi-devstack-aio-jammy nova-compute[2499505]: ERROR oslo_messaging.rpc.server     backing_disk_info \u003d self._get_instance_disk_info_from_config(\nOct 11 11:28:52 gibi-devstack-aio-jammy nova-compute[2499505]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/nova/nova/virt/libvirt/driver.py\", line 11913, in _get_instance_disk_info_from_config\nOct 11 11:28:52 gibi-devstack-aio-jammy nova-compute[2499505]: ERROR oslo_messaging.rpc.server     qemu_img_info \u003d disk_api.get_disk_info(path)\nOct 11 11:28:52 gibi-devstack-aio-jammy nova-compute[2499505]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/nova/nova/virt/disk/api.py\", line 97, in get_disk_info\nOct 11 11:28:52 gibi-devstack-aio-jammy nova-compute[2499505]: ERROR oslo_messaging.rpc.server     return images.qemu_img_info(path)\nOct 11 11:28:52 gibi-devstack-aio-jammy nova-compute[2499505]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/nova/nova/virt/images.py\", line 46, in qemu_img_info\nOct 11 11:28:52 gibi-devstack-aio-jammy nova-compute[2499505]: ERROR oslo_messaging.rpc.server     raise exception.DiskNotFound(location\u003dpath)\nOct 11 11:28:52 gibi-devstack-aio-jammy nova-compute[2499505]: ERROR oslo_messaging.rpc.server nova.exception.DiskNotFound: No disk at /opt/stack/data/nova/instances/ddf2aae2-9072-44f2-8a4c-e83131c1b1da/disk\nOct 11 11:28:52 gibi-devstack-aio-jammy nova-compute[2499505]: ERROR oslo_messaging.rpc.server \n```\n\nI think this can be prevented if we but the share_mapping to error in the first place.","commit_id":"d0d56b0bd76dd8c2253e576fb527d04e006552fb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"93d363b0c2736dcf683afbc1f9aeb7600efe6b51","unresolved":true,"context_lines":[{"line_number":4734,"context_line":"                share_mapping.delete()"},{"line_number":4735,"context_line":""},{"line_number":4736,"context_line":"            except ("},{"line_number":4737,"context_line":"                keystone_exception.http.Unauthorized"},{"line_number":4738,"context_line":"            ) as e:"},{"line_number":4739,"context_line":"                self._set_share_mapping_status("},{"line_number":4740,"context_line":"                    share_mapping, fields.ShareMappingStatus.ERROR"}],"source_content_type":"text/x-python","patch_set":54,"id":"15986e77_86515459","line":4737,"in_reply_to":"abd5c1e3_9ea1bfb4","updated":"2024-11-13 14:34:55.000000000","message":"Valid concern, but we can write some known issue telling that the manila API needs to be up when attaching/detaching.","commit_id":"d0d56b0bd76dd8c2253e576fb527d04e006552fb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0c7c3748516e173006c50368838f318ecda793fd","unresolved":true,"context_lines":[{"line_number":4734,"context_line":"                share_mapping.delete()"},{"line_number":4735,"context_line":""},{"line_number":4736,"context_line":"            except ("},{"line_number":4737,"context_line":"                keystone_exception.http.Unauthorized"},{"line_number":4738,"context_line":"            ) as e:"},{"line_number":4739,"context_line":"                self._set_share_mapping_status("},{"line_number":4740,"context_line":"                    share_mapping, fields.ShareMappingStatus.ERROR"}],"source_content_type":"text/x-python","patch_set":54,"id":"abd5c1e3_9ea1bfb4","line":4737,"in_reply_to":"ac62392f_28894f58","updated":"2024-11-07 14:59:27.000000000","message":"It turned out that the second error is not related to shares at all. Probably the first delete did some cleanup then failed. So the VM cannot be rebooted any more. So no bug here.\n\nSo the only reason I would still like to put the share_mapping to ERROR in the first place is symmetry. In case the mount of the share fails during attach I expect the mapping to be in ERRROR too.","commit_id":"d0d56b0bd76dd8c2253e576fb527d04e006552fb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d908131aec97ead9346709a3bac5144d8a2b2cad","unresolved":true,"context_lines":[{"line_number":4725,"context_line":"                )"},{"line_number":4726,"context_line":""},{"line_number":4727,"context_line":"            try:"},{"line_number":4728,"context_line":"                still_used \u003d check_share_usage("},{"line_number":4729,"context_line":"                    context, instance.uuid"},{"line_number":4730,"context_line":"                )"},{"line_number":4731,"context_line":""}],"source_content_type":"text/x-python","patch_set":56,"id":"a1bcdc79_f034437c","line":4728,"updated":"2024-09-17 15:07:07.000000000","message":"Something broke this logic recently. It returns true even if the only instance using the share is being deleted.\nRepro:\n* create a VM, attach a share, start the VM\n* stop the manila-api (to test some error scenario)\n* delete the VM.\n\nThen this will return true, the VM will be deleted and the manila access removal is not attempted.\n\n// later\nI don\u0027t even need to stop manila-api to recreate this.","commit_id":"f67fd045d5adb91c92ff360f7d5b81c2c0b7da75"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"0ac24edac0c408345ff0d8e9efb49e1ce96c7302","unresolved":false,"context_lines":[{"line_number":4725,"context_line":"                )"},{"line_number":4726,"context_line":""},{"line_number":4727,"context_line":"            try:"},{"line_number":4728,"context_line":"                still_used \u003d check_share_usage("},{"line_number":4729,"context_line":"                    context, instance.uuid"},{"line_number":4730,"context_line":"                )"},{"line_number":4731,"context_line":""}],"source_content_type":"text/x-python","patch_set":56,"id":"4c070514_dac3bab3","line":4728,"in_reply_to":"a1bcdc79_f034437c","updated":"2024-09-23 14:50:17.000000000","message":"I found the issue.\nAt some point I thought denying the share first could be better.\nThat was wrong, we need first to umount, then deactivate and finally deny the share. This is corrected in patch \"881472: Deletion of associated share mappings on instance deletion | https://review.opendev.org/c/openstack/nova/+/881472\"","commit_id":"f67fd045d5adb91c92ff360f7d5b81c2c0b7da75"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d908131aec97ead9346709a3bac5144d8a2b2cad","unresolved":true,"context_lines":[{"line_number":4756,"context_line":"                    share_mapping, fields.ShareMappingStatus.ERROR"},{"line_number":4757,"context_line":"                )"},{"line_number":4758,"context_line":"                LOG.error(e)"},{"line_number":4759,"context_line":"                raise"},{"line_number":4760,"context_line":"            except (exception.ShareNotFound, exception.ShareAccessNotFound):"},{"line_number":4761,"context_line":"                # Ignore the error if for any reason there is nothing to"},{"line_number":4762,"context_line":"                # remove from manila, so we can still detach the share."}],"source_content_type":"text/x-python","patch_set":56,"id":"f53799a2_bec17481","line":4759,"updated":"2024-09-17 15:07:07.000000000","message":"* both exception handler has the same code so you can combine them\n* if you stop the manila-api then delete a VM with a share now no error is logged and the server is deleted. So something is still wrong with the handling of this case.\n\n```\nSep 17 14:12:18 gibi-devstack-aio-jammy nova-compute[859]: DEBUG oslo_concurrency.lockutils [None req-1b5d3e0a-632c-47d6-970a-62e79ed8f276 demo demo] Acquiring lock \"e45efde2-0232-4bc2-8296-067d2340792b\" by \"nova.compute.manager.ComputeManager.deny_share.\u003clocals\u003e._deny_share\" {{(pid\u003d859) inner /opt/stack/data/venv/lib/python3.10/site-packages/oslo_concurrency/lockutils.py:402}}\nSep 17 14:12:18 gibi-devstack-aio-jammy nova-compute[859]: DEBUG oslo_concurrency.lockutils [None req-1b5d3e0a-632c-47d6-970a-62e79ed8f276 demo demo] Lock \"e45efde2-0232-4bc2-8296-067d2340792b\" acquired by \"nova.compute.manager.ComputeManager.deny_share.\u003clocals\u003e._deny_share\" :: waited 0.001s {{(pid\u003d859) inner /opt/stack/data/venv/lib/python3.10/site-packages/oslo_concurrency/lockutils.py:407}}\nSep 17 14:12:19 gibi-devstack-aio-jammy nova-compute[859]: INFO oslo.messaging.notification.instance.share_detach.start [None req-1b5d3e0a-632c-47d6-970a-62e79ed8f276 demo demo] {\"message_id\": \"a1247baa-2b71-4d7f-bbe6-70b7eea86f76\", \"publisher_id\": \"nova-api:gibi-devstack-aio-jammy\", \"event_type\": \"instance.share_detach.start\", \"priority\": \"INFO\", \"payload\": {\"nova_object.name\": \"InstanceActionSharePayload\", \"nova_object.namespace\": \"nova\", \"nova_object.version\": \"1.0\", \"nova_object.data\": {\"share_id\": \"e45efde2-0232-4bc2-8296-067d2340792b\", \"fault\": null, \"request_id\": \"req-1b5d3e0a-632c-47d6-970a-62e79ed8f276\", \"uuid\": \"b6bb5eaf-593d-4927-ac82-f2e383a97f36\", \"user_id\": \"f9851639bcf348fbabe8c7deb06cbab0\", \"tenant_id\": \"b46130f65a8e44afa8973aae89c0acf7\", \"reservation_id\": \"r-ktlwic9g\", \"display_name\": \"vm3\", \"display_description\": null, \"host_name\": \"vm3\", \"host\": \"gibi-devstack-aio-jammy\", \"node\": \"gibi-devstack-aio-jammy\", \"os_type\": null, \"architecture\": null, \"availability_zone\": \"nova\", \"flavor\": {\"nova_object.name\": \"FlavorPayload\", \"nova_object.namespace\": \"nova\", \"nova_object.version\": \"1.4\", \"nova_object.data\": {\"flavorid\": \"d2\", \"memory_mb\": 1024, \"vcpus\": 1, \"root_gb\": 10, \"ephemeral_gb\": 0, \"name\": \"ds1G\", \"swap\": 0, \"rxtx_factor\": 1.0, \"vcpu_weight\": 0, \"disabled\": false, \"is_public\": true, \"extra_specs\": {\"hw_rng:allowed\": \"True\"}, \"projects\": null, \"description\": null}}, \"image_uuid\": \"06b8151b-3acc-44a3-90fb-5538683e991a\", \"key_name\": null, \"kernel_id\": \"\", \"ramdisk_id\": \"\", \"created_at\": \"2024-09-17T14:07:59Z\", \"launched_at\": \"2024-09-17T14:08:13Z\", \"terminated_at\": null, \"deleted_at\": null, \"updated_at\": \"2024-09-17T14:12:13Z\", \"state\": \"active\", \"power_state\": \"running\", \"task_state\": \"deleting\", \"progress\": 0, \"ip_addresses\": [], \"block_devices\": [], \"metadata\": {}, \"locked\": false, \"auto_disk_config\": \"MANUAL\", \"action_initiator_user\": \"f9851639bcf348fbabe8c7deb06cbab0\", \"action_initiator_project\": \"b46130f65a8e44afa8973aae89c0acf7\", \"locked_reason\": null, \"shares\": [{\"nova_object.name\": \"SharePayload\", \"nova_object.namespace\": \"nova\", \"nova_object.version\": \"1.0\", \"nova_object.data\": {\"share_mapping_uuid\": \"60a4c4e9-1b3c-4a80-b3a1-95d580313eaf\", \"share_id\": \"e45efde2-0232-4bc2-8296-067d2340792b\", \"status\": \"active\", \"tag\": \"my-share\", \"export_location\": \"10.0.76.222:/opt/stack/data/manila/mnt/share-00aa6a34-f646-4af8-9844-5e6bd137d690\"}}]}}, \"timestamp\": \"2024-09-17 14:12:19.369343\"}\nSep 17 14:12:21 gibi-devstack-aio-jammy nova-compute[859]: INFO oslo.messaging.notification.instance.share_detach.end [None req-1b5d3e0a-632c-47d6-970a-62e79ed8f276 demo demo] {\"message_id\": \"3d539791-8085-415c-8bc8-8bb343411b76\", \"publisher_id\": \"nova-api:gibi-devstack-aio-jammy\", \"event_type\": \"instance.share_detach.end\", \"priority\": \"INFO\", \"payload\": {\"nova_object.name\": \"InstanceActionSharePayload\", \"nova_object.namespace\": \"nova\", \"nova_object.version\": \"1.0\", \"nova_object.data\": {\"share_id\": \"e45efde2-0232-4bc2-8296-067d2340792b\", \"fault\": null, \"request_id\": \"req-1b5d3e0a-632c-47d6-970a-62e79ed8f276\", \"uuid\": \"b6bb5eaf-593d-4927-ac82-f2e383a97f36\", \"user_id\": \"f9851639bcf348fbabe8c7deb06cbab0\", \"tenant_id\": \"b46130f65a8e44afa8973aae89c0acf7\", \"reservation_id\": \"r-ktlwic9g\", \"display_name\": \"vm3\", \"display_description\": null, \"host_name\": \"vm3\", \"host\": \"gibi-devstack-aio-jammy\", \"node\": \"gibi-devstack-aio-jammy\", \"os_type\": null, \"architecture\": null, \"availability_zone\": \"nova\", \"flavor\": {\"nova_object.name\": \"FlavorPayload\", \"nova_object.namespace\": \"nova\", \"nova_object.version\": \"1.4\", \"nova_object.data\": {\"flavorid\": \"d2\", \"memory_mb\": 1024, \"vcpus\": 1, \"root_gb\": 10, \"ephemeral_gb\": 0, \"name\": \"ds1G\", \"swap\": 0, \"rxtx_factor\": 1.0, \"vcpu_weight\": 0, \"disabled\": false, \"is_public\": true, \"extra_specs\": {\"hw_rng:allowed\": \"True\"}, \"projects\": null, \"description\": null}}, \"image_uuid\": \"06b8151b-3acc-44a3-90fb-5538683e991a\", \"key_name\": null, \"kernel_id\": \"\", \"ramdisk_id\": \"\", \"created_at\": \"2024-09-17T14:07:59Z\", \"launched_at\": \"2024-09-17T14:08:13Z\", \"terminated_at\": null, \"deleted_at\": null, \"updated_at\": \"2024-09-17T14:12:13Z\", \"state\": \"active\", \"power_state\": \"running\", \"task_state\": \"deleting\", \"progress\": 0, \"ip_addresses\": [], \"block_devices\": [], \"metadata\": {}, \"locked\": false, \"auto_disk_config\": \"MANUAL\", \"action_initiator_user\": \"f9851639bcf348fbabe8c7deb06cbab0\", \"action_initiator_project\": \"b46130f65a8e44afa8973aae89c0acf7\", \"locked_reason\": null, \"shares\": []}}, \"timestamp\": \"2024-09-17 14:12:21.384021\"}\nSep 17 14:12:21 gibi-devstack-aio-jammy nova-compute[859]: DEBUG oslo_concurrency.lockutils [None req-1b5d3e0a-632c-47d6-970a-62e79ed8f276 demo demo] Lock \"e45efde2-0232-4bc2-8296-067d2340792b\" \"released\" by \"nova.compute.manager.ComputeManager.deny_share.\u003clocals\u003e._deny_share\" :: held 3.025s {{(pid\u003d859) inner /opt/stack/data/venv/lib/python3.10/site-packages/oslo_concurrency/lockutils.py:421}}\n```","commit_id":"f67fd045d5adb91c92ff360f7d5b81c2c0b7da75"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"25c807b6ffc1c3047a8847ac959357e706aca3be","unresolved":false,"context_lines":[{"line_number":4756,"context_line":"                    share_mapping, fields.ShareMappingStatus.ERROR"},{"line_number":4757,"context_line":"                )"},{"line_number":4758,"context_line":"                LOG.error(e)"},{"line_number":4759,"context_line":"                raise"},{"line_number":4760,"context_line":"            except (exception.ShareNotFound, exception.ShareAccessNotFound):"},{"line_number":4761,"context_line":"                # Ignore the error if for any reason there is nothing to"},{"line_number":4762,"context_line":"                # remove from manila, so we can still detach the share."}],"source_content_type":"text/x-python","patch_set":56,"id":"c6b37b41_b78456fe","line":4759,"in_reply_to":"f53799a2_bec17481","updated":"2024-09-17 15:07:33.000000000","message":"ignore this.","commit_id":"f67fd045d5adb91c92ff360f7d5b81c2c0b7da75"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f9a9ee6245aa579e214200c360489c9c7e405061","unresolved":true,"context_lines":[{"line_number":1471,"context_line":"                   volume_id\u003dvolume_id, snapshot_id\u003dsnapshot_id,"},{"line_number":1472,"context_line":"                   delete_info\u003ddelete_info)"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    def mount_share(self, ctxt, instance, share_mapping):"},{"line_number":1475,"context_line":"        version \u003d \u00276.3\u0027"},{"line_number":1476,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1477,"context_line":"        if not client.can_send_version(version):"}],"source_content_type":"text/x-python","patch_set":42,"id":"1dbe53cc_134870eb","line":1474,"updated":"2024-02-25 22:49:43.000000000","message":"again s/mount/attach/","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":1471,"context_line":"                   volume_id\u003dvolume_id, snapshot_id\u003dsnapshot_id,"},{"line_number":1472,"context_line":"                   delete_info\u003ddelete_info)"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    def mount_share(self, ctxt, instance, share_mapping):"},{"line_number":1475,"context_line":"        version \u003d \u00276.3\u0027"},{"line_number":1476,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1477,"context_line":"        if not client.can_send_version(version):"}],"source_content_type":"text/x-python","patch_set":42,"id":"854818b8_70ed57d2","line":1474,"in_reply_to":"1dbe53cc_134870eb","updated":"2024-07-03 15:44:55.000000000","message":"Done","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f9a9ee6245aa579e214200c360489c9c7e405061","unresolved":true,"context_lines":[{"line_number":1487,"context_line":"            share_mapping\u003dshare_mapping"},{"line_number":1488,"context_line":"        )"},{"line_number":1489,"context_line":""},{"line_number":1490,"context_line":"    def umount_share(self, ctxt, instance, share_mapping):"},{"line_number":1491,"context_line":"        version \u003d \u00276.3\u0027"},{"line_number":1492,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1493,"context_line":"        if not client.can_send_version(version):"}],"source_content_type":"text/x-python","patch_set":42,"id":"a637f36e_ed0ba397","line":1490,"updated":"2024-02-25 22:49:43.000000000","message":"same s/unmount/detach/","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":1487,"context_line":"            share_mapping\u003dshare_mapping"},{"line_number":1488,"context_line":"        )"},{"line_number":1489,"context_line":""},{"line_number":1490,"context_line":"    def umount_share(self, ctxt, instance, share_mapping):"},{"line_number":1491,"context_line":"        version \u003d \u00276.3\u0027"},{"line_number":1492,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1493,"context_line":"        if not client.can_send_version(version):"}],"source_content_type":"text/x-python","patch_set":42,"id":"01683889_dbfe251a","line":1490,"in_reply_to":"a637f36e_ed0ba397","updated":"2024-07-03 15:44:55.000000000","message":"Done","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"73cb6b04a4673762024b38ec0a1d7fa001a9dbc5","unresolved":true,"context_lines":[{"line_number":1481,"context_line":"        version \u003d \u00276.3\u0027"},{"line_number":1482,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1483,"context_line":"        if not client.can_send_version(version):"},{"line_number":1484,"context_line":"            raise exception.NovaException("},{"line_number":1485,"context_line":"                \u0027Compute RPC version does not support \u0027"},{"line_number":1486,"context_line":"                \u0027allow_share method.\u0027)"},{"line_number":1487,"context_line":"        cctxt \u003d self.router.client(ctxt).prepare("}],"source_content_type":"text/x-python","patch_set":49,"id":"e9173b25_2433ec93","line":1484,"updated":"2024-06-12 14:58:49.000000000","message":"please rather `raise exception.UnsupportedRPCVersion(\n                    api\u003d\"allow_share\",\n                    required\u003d\"6.3\")`","commit_id":"134fba10db5354fb2c9d9c2eea083d589f819412"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"bc559985c8550fc595ad69ea15ce83cb773d6044","unresolved":false,"context_lines":[{"line_number":1481,"context_line":"        version \u003d \u00276.3\u0027"},{"line_number":1482,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1483,"context_line":"        if not client.can_send_version(version):"},{"line_number":1484,"context_line":"            raise exception.NovaException("},{"line_number":1485,"context_line":"                \u0027Compute RPC version does not support \u0027"},{"line_number":1486,"context_line":"                \u0027allow_share method.\u0027)"},{"line_number":1487,"context_line":"        cctxt \u003d self.router.client(ctxt).prepare("}],"source_content_type":"text/x-python","patch_set":49,"id":"ec52295e_41e6ca7b","line":1484,"in_reply_to":"e9173b25_2433ec93","updated":"2024-06-20 08:23:45.000000000","message":"Done","commit_id":"134fba10db5354fb2c9d9c2eea083d589f819412"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"73cb6b04a4673762024b38ec0a1d7fa001a9dbc5","unresolved":false,"context_lines":[{"line_number":1486,"context_line":"                \u0027allow_share method.\u0027)"},{"line_number":1487,"context_line":"        cctxt \u003d self.router.client(ctxt).prepare("},{"line_number":1488,"context_line":"                server\u003d_compute_host(None, instance), version\u003dversion)"},{"line_number":1489,"context_line":"        cctxt.cast("},{"line_number":1490,"context_line":"            ctxt,"},{"line_number":1491,"context_line":"            \"allow_share\","},{"line_number":1492,"context_line":"            instance\u003dinstance,"}],"source_content_type":"text/x-python","patch_set":49,"id":"51719e7e_5cb7ef36","line":1489,"updated":"2024-06-12 14:58:49.000000000","message":"fine with being an async call","commit_id":"134fba10db5354fb2c9d9c2eea083d589f819412"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":true,"context_lines":[{"line_number":1478,"context_line":"                   delete_info\u003ddelete_info)"},{"line_number":1479,"context_line":""},{"line_number":1480,"context_line":"    def allow_share(self, ctxt, instance, share_mapping):"},{"line_number":1481,"context_line":"        version \u003d \u00276.3\u0027"},{"line_number":1482,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1483,"context_line":"        if not client.can_send_version(version):"},{"line_number":1484,"context_line":"            raise exception.UnsupportedRPCVersion("}],"source_content_type":"text/x-python","patch_set":51,"id":"1dfe031d_f0433ddc","line":1481,"range":{"start_line":1481,"start_character":18,"end_line":1481,"end_character":23},"updated":"2024-07-03 15:44:55.000000000","message":"shouldn\u0027t it be 6.4 ?","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"90415a456ead7a9dede22c817cfa7a392d967196","unresolved":false,"context_lines":[{"line_number":1478,"context_line":"                   delete_info\u003ddelete_info)"},{"line_number":1479,"context_line":""},{"line_number":1480,"context_line":"    def allow_share(self, ctxt, instance, share_mapping):"},{"line_number":1481,"context_line":"        version \u003d \u00276.3\u0027"},{"line_number":1482,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1483,"context_line":"        if not client.can_send_version(version):"},{"line_number":1484,"context_line":"            raise exception.UnsupportedRPCVersion("}],"source_content_type":"text/x-python","patch_set":51,"id":"7e292ba1_f113a82e","line":1481,"range":{"start_line":1481,"start_character":18,"end_line":1481,"end_character":23},"in_reply_to":"1dfe031d_f0433ddc","updated":"2024-07-16 12:44:46.000000000","message":"Done","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":true,"context_lines":[{"line_number":1494,"context_line":"        )"},{"line_number":1495,"context_line":""},{"line_number":1496,"context_line":"    def deny_share(self, ctxt, instance, share_mapping):"},{"line_number":1497,"context_line":"        version \u003d \u00276.3\u0027"},{"line_number":1498,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1499,"context_line":"        if not client.can_send_version(version):"},{"line_number":1500,"context_line":"            raise exception.UnsupportedRPCVersion("}],"source_content_type":"text/x-python","patch_set":51,"id":"3a90def4_9a535e17","line":1497,"range":{"start_line":1497,"start_character":18,"end_line":1497,"end_character":23},"updated":"2024-07-03 15:44:55.000000000","message":"ditto, we need to bump this version","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"90415a456ead7a9dede22c817cfa7a392d967196","unresolved":false,"context_lines":[{"line_number":1494,"context_line":"        )"},{"line_number":1495,"context_line":""},{"line_number":1496,"context_line":"    def deny_share(self, ctxt, instance, share_mapping):"},{"line_number":1497,"context_line":"        version \u003d \u00276.3\u0027"},{"line_number":1498,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1499,"context_line":"        if not client.can_send_version(version):"},{"line_number":1500,"context_line":"            raise exception.UnsupportedRPCVersion("}],"source_content_type":"text/x-python","patch_set":51,"id":"3ac91ca3_7362d9d1","line":1497,"range":{"start_line":1497,"start_character":18,"end_line":1497,"end_character":23},"in_reply_to":"3a90def4_9a535e17","updated":"2024-07-16 12:44:46.000000000","message":"Done","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":1507,"context_line":"            \"deny_share\","},{"line_number":1508,"context_line":"            instance\u003dinstance,"},{"line_number":1509,"context_line":"            share_mapping\u003dshare_mapping,"},{"line_number":1510,"context_line":"        )"},{"line_number":1511,"context_line":""},{"line_number":1512,"context_line":"    def external_instance_event(self, ctxt, instances, events, host\u003dNone):"},{"line_number":1513,"context_line":"        instance \u003d instances[0]"}],"source_content_type":"text/x-python","patch_set":51,"id":"bcf18089_058159f4","line":1510,"updated":"2024-07-03 15:44:55.000000000","message":"thnaks for having modified that.","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"}],"nova/conf/netconf.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3b729e6f6e37b2f45563b43aaa048cd04078e7fd","unresolved":true,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"* my_ip - if my_block_storage_ip is not set, then my_ip value is used."},{"line_number":52,"context_line":"\"\"\"),"},{"line_number":53,"context_line":"    cfg.StrOpt(\"my_shared_fs_storage_ip\","},{"line_number":54,"context_line":"        default\u003d\"$my_ip\","},{"line_number":55,"context_line":"        help\u003d\"\"\""},{"line_number":56,"context_line":"The IP address which is used to connect to the shared_fs storage (manila)"}],"source_content_type":"text/x-python","patch_set":48,"id":"0c35dd84_c7cf76d9","line":53,"range":{"start_line":53,"start_character":16,"end_line":53,"end_character":39},"updated":"2024-06-04 11:32:22.000000000","message":"we realy shoudl not proliferate teh my_ prefix\n\nthis is a legacy thing and we are not ment to anthropomorphise nova in this way.\n\ni woudl generally prefer to\n\nrename my_ip -\u003e management_ipv4\nand my_block_storage_ip to storage_ip\n\nand use storage_ip for manila too.\n\nfailing tha ti would like this to be\n\nshared_fs_storage_ip\n\nwithout the my prefix","commit_id":"6ad8082d44471c1ecd13e1a331595e3971edb0d1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"061d704866c50f326d1866f215a3998cfb6a3406","unresolved":true,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"* my_ip - if my_block_storage_ip is not set, then my_ip value is used."},{"line_number":52,"context_line":"\"\"\"),"},{"line_number":53,"context_line":"    cfg.StrOpt(\"my_shared_fs_storage_ip\","},{"line_number":54,"context_line":"        default\u003d\"$my_ip\","},{"line_number":55,"context_line":"        help\u003d\"\"\""},{"line_number":56,"context_line":"The IP address which is used to connect to the shared_fs storage (manila)"}],"source_content_type":"text/x-python","patch_set":48,"id":"c7352424_22f25855","line":53,"range":{"start_line":53,"start_character":16,"end_line":53,"end_character":39},"in_reply_to":"0c35dd84_c7cf76d9","updated":"2024-06-04 12:44:44.000000000","message":"I guess the my_ prefix is here to signify that this IP is not the IP of the storage backend but the IP of the compute node, used to connect to the storage backend.","commit_id":"6ad8082d44471c1ecd13e1a331595e3971edb0d1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"375c4278bb07665fa14bfce003c8175fda135306","unresolved":true,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"* my_ip - if my_block_storage_ip is not set, then my_ip value is used."},{"line_number":52,"context_line":"\"\"\"),"},{"line_number":53,"context_line":"    cfg.StrOpt(\"my_shared_fs_storage_ip\","},{"line_number":54,"context_line":"        default\u003d\"$my_ip\","},{"line_number":55,"context_line":"        help\u003d\"\"\""},{"line_number":56,"context_line":"The IP address which is used to connect to the shared_fs storage (manila)"}],"source_content_type":"text/x-python","patch_set":48,"id":"a613d2ed_e5536050","line":53,"range":{"start_line":53,"start_character":16,"end_line":53,"end_character":39},"in_reply_to":"c7352424_22f25855","updated":"2024-06-04 13:43:33.000000000","message":"correct however i dont think that disticntion makes sense to encode with a my prefix.\n\nall of thise option exclisivly refer to nova not the storage backend.\n\nwe dont quailfy host with my for example so i dont think we should have been qualifing the others.\n\nim also not conviced we need a seperate config option for manialla.\nthere could be multiple sotrage backend netowrks but i would think that would be excpetionally rare.\n\ni.e. using a diffent stroage network for cinder backed by ceph vs manilla backed by ceph.\n\nso i suspect a singel storage_ip config option for all network storage is likely what is generally most would use.\n\n\nthe use of my_ is a prexisting issue so its not strictly an issue with this change i just dont really like proliferating what i see already as tech debt\n\nthis distatste is not enough of a reason to block this change on i just wanted to bering it up to see what others tought.","commit_id":"6ad8082d44471c1ecd13e1a331595e3971edb0d1"}],"nova/objects/service.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"# NOTE(danms): This is the global service version counter"},{"line_number":34,"context_line":"SERVICE_VERSION \u003d 68"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"# NOTE(danms): This is our SERVICE_VERSION history. The idea is that any"}],"source_content_type":"text/x-python","patch_set":51,"id":"504a4eca_6ae3a494","line":34,"updated":"2024-07-03 15:44:55.000000000","message":"++","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"}],"nova/scheduler/request_filter.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":213,"context_line":"        \u0027hw_video_model\u0027: \u0027COMPUTE_GRAPHICS_MODEL\u0027,"},{"line_number":214,"context_line":"        \u0027hw_vif_model\u0027: \u0027COMPUTE_NET_VIF_MODEL\u0027,"},{"line_number":215,"context_line":"        \u0027hw_architecture\u0027: \u0027HW_ARCH\u0027,"},{"line_number":216,"context_line":"        \u0027hw_emulation_architecture\u0027: \u0027COMPUTE_ARCH\u0027,"},{"line_number":217,"context_line":"    }"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    trait_names \u003d []"}],"source_content_type":"text/x-python","patch_set":12,"id":"ca2c5198_5265e9cd","line":216,"updated":"2022-08-26 10:26:41.000000000","message":"image props can be handled here","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"233b811f8a15e3e9ef503548927b52520fa0149f","unresolved":true,"context_lines":[{"line_number":213,"context_line":"        \u0027hw_video_model\u0027: \u0027COMPUTE_GRAPHICS_MODEL\u0027,"},{"line_number":214,"context_line":"        \u0027hw_vif_model\u0027: \u0027COMPUTE_NET_VIF_MODEL\u0027,"},{"line_number":215,"context_line":"        \u0027hw_architecture\u0027: \u0027HW_ARCH\u0027,"},{"line_number":216,"context_line":"        \u0027hw_emulation_architecture\u0027: \u0027COMPUTE_ARCH\u0027,"},{"line_number":217,"context_line":"    }"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    trait_names \u003d []"}],"source_content_type":"text/x-python","patch_set":12,"id":"c0c1a53f_d4769505","line":216,"in_reply_to":"5444232e_30f6e091","updated":"2022-09-14 07:48:26.000000000","message":"See comment https://review.opendev.org/c/openstack/nova/+/833090/comments/54f70fbb_438eb736.\nHowever, hw:mem_page_size (huge pages) is supported only on flavors and not as an image property.\nIs it something we would like to change ?","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"11108d787970607ec6a2164842a5d0080116fa14","unresolved":true,"context_lines":[{"line_number":213,"context_line":"        \u0027hw_video_model\u0027: \u0027COMPUTE_GRAPHICS_MODEL\u0027,"},{"line_number":214,"context_line":"        \u0027hw_vif_model\u0027: \u0027COMPUTE_NET_VIF_MODEL\u0027,"},{"line_number":215,"context_line":"        \u0027hw_architecture\u0027: \u0027HW_ARCH\u0027,"},{"line_number":216,"context_line":"        \u0027hw_emulation_architecture\u0027: \u0027COMPUTE_ARCH\u0027,"},{"line_number":217,"context_line":"    }"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    trait_names \u003d []"}],"source_content_type":"text/x-python","patch_set":12,"id":"5444232e_30f6e091","line":216,"in_reply_to":"7ae00676_4e4caf7d","updated":"2022-09-01 09:41:34.000000000","message":"I just pointed here that how we already handle image properties based scheduling here. Below I commented that \"it is hw:mem_backing_file in the nova spec also there is a comment in the spec to check both the image and the flavor\" So I\u0027m wondering if we need to extend this to handle the mem_backing_file image property.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":true,"context_lines":[{"line_number":213,"context_line":"        \u0027hw_video_model\u0027: \u0027COMPUTE_GRAPHICS_MODEL\u0027,"},{"line_number":214,"context_line":"        \u0027hw_vif_model\u0027: \u0027COMPUTE_NET_VIF_MODEL\u0027,"},{"line_number":215,"context_line":"        \u0027hw_architecture\u0027: \u0027HW_ARCH\u0027,"},{"line_number":216,"context_line":"        \u0027hw_emulation_architecture\u0027: \u0027COMPUTE_ARCH\u0027,"},{"line_number":217,"context_line":"    }"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    trait_names \u003d []"}],"source_content_type":"text/x-python","patch_set":12,"id":"7ae00676_4e4caf7d","line":216,"in_reply_to":"ca2c5198_5265e9cd","updated":"2022-08-31 14:51:42.000000000","message":"Hum I guess nothing is required here.\nImage properties with trait can be specified with trait:\u003ctrait_name\u003e and I think it is already wired. Please let me know if I\u0027m wrong or miss the point.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":280,"context_line":"    COMPUTE_STORAGE_VIRTIO_FS trait."},{"line_number":281,"context_line":"    \"\"\""},{"line_number":282,"context_line":"    trait_name \u003d os_traits.COMPUTE_STORAGE_VIRTIO_FS"},{"line_number":283,"context_line":"    if request_spec.flavor.extra_specs.get(\u0027virtio_fs\u0027):"},{"line_number":284,"context_line":"        request_spec.root_required.add(trait_name)"},{"line_number":285,"context_line":"        LOG.debug(\u0027virtio_fs_filter request filter added required \u0027"},{"line_number":286,"context_line":"                  \u0027trait %s\u0027, trait_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"0de64fe6_86fa460b","line":283,"range":{"start_line":283,"start_character":44,"end_line":283,"end_character":53},"updated":"2022-08-26 10:26:41.000000000","message":"do we need hw: prefix here too?","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":true,"context_lines":[{"line_number":280,"context_line":"    COMPUTE_STORAGE_VIRTIO_FS trait."},{"line_number":281,"context_line":"    \"\"\""},{"line_number":282,"context_line":"    trait_name \u003d os_traits.COMPUTE_STORAGE_VIRTIO_FS"},{"line_number":283,"context_line":"    if request_spec.flavor.extra_specs.get(\u0027virtio_fs\u0027):"},{"line_number":284,"context_line":"        request_spec.root_required.add(trait_name)"},{"line_number":285,"context_line":"        LOG.debug(\u0027virtio_fs_filter request filter added required \u0027"},{"line_number":286,"context_line":"                  \u0027trait %s\u0027, trait_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"64beeac2_44931dcb","line":283,"range":{"start_line":283,"start_character":44,"end_line":283,"end_character":53},"in_reply_to":"0de64fe6_86fa460b","updated":"2022-08-31 14:51:42.000000000","message":"Removed because a specific filter is not required IMHO.\nWe use the trait:\u003ctrait_name\u003e\u003drequired feature already implemented.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"11108d787970607ec6a2164842a5d0080116fa14","unresolved":false,"context_lines":[{"line_number":280,"context_line":"    COMPUTE_STORAGE_VIRTIO_FS trait."},{"line_number":281,"context_line":"    \"\"\""},{"line_number":282,"context_line":"    trait_name \u003d os_traits.COMPUTE_STORAGE_VIRTIO_FS"},{"line_number":283,"context_line":"    if request_spec.flavor.extra_specs.get(\u0027virtio_fs\u0027):"},{"line_number":284,"context_line":"        request_spec.root_required.add(trait_name)"},{"line_number":285,"context_line":"        LOG.debug(\u0027virtio_fs_filter request filter added required \u0027"},{"line_number":286,"context_line":"                  \u0027trait %s\u0027, trait_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"513936ec_caaac288","line":283,"range":{"start_line":283,"start_character":44,"end_line":283,"end_character":53},"in_reply_to":"64beeac2_44931dcb","updated":"2022-09-01 09:41:34.000000000","message":"Ack","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":295,"context_line":"    COMPUTE_MEM_BACKING_FILE trait."},{"line_number":296,"context_line":"    \"\"\""},{"line_number":297,"context_line":"    trait_name \u003d os_traits.COMPUTE_MEM_BACKING_FILE"},{"line_number":298,"context_line":"    if request_spec.flavor.extra_specs.get(\u0027mem_backing_file\u0027):"},{"line_number":299,"context_line":"        request_spec.root_required.add(trait_name)"},{"line_number":300,"context_line":"        LOG.debug(\u0027mem_backing_file_filter request filter added required \u0027"},{"line_number":301,"context_line":"                  \u0027trait %s\u0027, trait_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"54f70fbb_438eb736","line":298,"range":{"start_line":298,"start_character":44,"end_line":298,"end_character":61},"updated":"2022-08-26 10:26:41.000000000","message":"it is hw:mem_backing_file in the nova spec also there is a comment in the spec to check both the image and the flavor","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":true,"context_lines":[{"line_number":295,"context_line":"    COMPUTE_MEM_BACKING_FILE trait."},{"line_number":296,"context_line":"    \"\"\""},{"line_number":297,"context_line":"    trait_name \u003d os_traits.COMPUTE_MEM_BACKING_FILE"},{"line_number":298,"context_line":"    if request_spec.flavor.extra_specs.get(\u0027mem_backing_file\u0027):"},{"line_number":299,"context_line":"        request_spec.root_required.add(trait_name)"},{"line_number":300,"context_line":"        LOG.debug(\u0027mem_backing_file_filter request filter added required \u0027"},{"line_number":301,"context_line":"                  \u0027trait %s\u0027, trait_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"a8af71fb_8b470065","line":298,"range":{"start_line":298,"start_character":44,"end_line":298,"end_character":61},"in_reply_to":"54f70fbb_438eb736","updated":"2022-08-31 14:51:42.000000000","message":"Removed because a specific filter is not required IMHO.\nWe use the trait:\u003ctrait_name\u003e\u003drequired feature already implemented.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"ec32f755f6b8ab28c349387c958b2f75d8ac71b3","unresolved":true,"context_lines":[{"line_number":295,"context_line":"    COMPUTE_MEM_BACKING_FILE trait."},{"line_number":296,"context_line":"    \"\"\""},{"line_number":297,"context_line":"    trait_name \u003d os_traits.COMPUTE_MEM_BACKING_FILE"},{"line_number":298,"context_line":"    if request_spec.flavor.extra_specs.get(\u0027mem_backing_file\u0027):"},{"line_number":299,"context_line":"        request_spec.root_required.add(trait_name)"},{"line_number":300,"context_line":"        LOG.debug(\u0027mem_backing_file_filter request filter added required \u0027"},{"line_number":301,"context_line":"                  \u0027trait %s\u0027, trait_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9fd900ab_279b41ea","line":298,"range":{"start_line":298,"start_character":44,"end_line":298,"end_character":61},"in_reply_to":"8b621839_4db76f8b","updated":"2022-09-08 09:19:53.000000000","message":"From my understanding, the trait:\u003ctrait_name\u003e\u003drequired can be applied via extra specs (https://docs.openstack.org/nova/yoga/user/flavors.html) and image properties (https://docs.openstack.org/glance/yoga/admin/useful-image-properties.html).\nAm I wrong ?","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"11108d787970607ec6a2164842a5d0080116fa14","unresolved":true,"context_lines":[{"line_number":295,"context_line":"    COMPUTE_MEM_BACKING_FILE trait."},{"line_number":296,"context_line":"    \"\"\""},{"line_number":297,"context_line":"    trait_name \u003d os_traits.COMPUTE_MEM_BACKING_FILE"},{"line_number":298,"context_line":"    if request_spec.flavor.extra_specs.get(\u0027mem_backing_file\u0027):"},{"line_number":299,"context_line":"        request_spec.root_required.add(trait_name)"},{"line_number":300,"context_line":"        LOG.debug(\u0027mem_backing_file_filter request filter added required \u0027"},{"line_number":301,"context_line":"                  \u0027trait %s\u0027, trait_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"8b621839_4db76f8b","line":298,"range":{"start_line":298,"start_character":44,"end_line":298,"end_character":61},"in_reply_to":"a8af71fb_8b470065","updated":"2022-09-01 09:41:34.000000000","message":"does it mean that mem_backing_file cannot be requested via image property?","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"}],"nova/tests/fixtures/libvirt.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"    def attach(self):"},{"line_number":1057,"context_line":"        pass"},{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":"    def detach(self):"},{"line_number":1060,"context_line":"        pass"},{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":"    def reset(self):"}],"source_content_type":"text/x-python","patch_set":51,"id":"4c6f5173_1ec133c8","line":1059,"updated":"2024-07-03 15:44:55.000000000","message":"unrelated fix, but cool.","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6b51feb7d73a7c54691791b744721ab8613047f0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":50,"id":"7f092c79_ef0947ff","updated":"2024-06-18 12:13:44.000000000","message":"we need coverage that power_off does the unmount.","commit_id":"980cb1eb70ff4a48e13e429f9ae509cbfa83203d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"bc559985c8550fc595ad69ea15ce83cb773d6044","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"74ea8dc1_d7206884","in_reply_to":"7f092c79_ef0947ff","updated":"2024-06-20 08:23:45.000000000","message":"Done","commit_id":"980cb1eb70ff4a48e13e429f9ae509cbfa83203d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6b51feb7d73a7c54691791b744721ab8613047f0","unresolved":true,"context_lines":[{"line_number":2670,"context_line":"    @mock.patch(\u0027nova.network.neutron.API.get_instance_nw_info\u0027)"},{"line_number":2671,"context_line":"    @mock.patch.object(fake.FakeDriver, \u0027power_on\u0027)"},{"line_number":2672,"context_line":"    @mock.patch(\u0027nova.compute.manager.ComputeManager._get_share_info\u0027)"},{"line_number":2673,"context_line":"    def test_power_on_with_share(self, mock_share,"},{"line_number":2674,"context_line":"            mock_power_on, mock_nw_info, mock_blockdev):"},{"line_number":2675,"context_line":"        instance \u003d self._create_fake_instance_obj()"},{"line_number":2676,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"e40cf130_9d3bae4e","line":2673,"updated":"2024-06-18 12:13:44.000000000","message":"this should assert that power_on mounts the shares.","commit_id":"980cb1eb70ff4a48e13e429f9ae509cbfa83203d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"bc559985c8550fc595ad69ea15ce83cb773d6044","unresolved":false,"context_lines":[{"line_number":2670,"context_line":"    @mock.patch(\u0027nova.network.neutron.API.get_instance_nw_info\u0027)"},{"line_number":2671,"context_line":"    @mock.patch.object(fake.FakeDriver, \u0027power_on\u0027)"},{"line_number":2672,"context_line":"    @mock.patch(\u0027nova.compute.manager.ComputeManager._get_share_info\u0027)"},{"line_number":2673,"context_line":"    def test_power_on_with_share(self, mock_share,"},{"line_number":2674,"context_line":"            mock_power_on, mock_nw_info, mock_blockdev):"},{"line_number":2675,"context_line":"        instance \u003d self._create_fake_instance_obj()"},{"line_number":2676,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"ed498dcb_fc80a43f","line":2673,"in_reply_to":"e40cf130_9d3bae4e","updated":"2024-06-20 08:23:45.000000000","message":"Done","commit_id":"980cb1eb70ff4a48e13e429f9ae509cbfa83203d"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2c379a7666084e159ec819fbe5333563155cb30f","unresolved":true,"context_lines":[{"line_number":2227,"context_line":"    @mock.patch(\u0027nova.compute.manager.LOG\u0027, autospec\u003dTrue)"},{"line_number":2228,"context_line":"    @mock.patch(\u0027nova.objects.instance.Instance.save\u0027)"},{"line_number":2229,"context_line":"    @mock.patch(\u0027nova.objects.ShareMappingList.get_by_instance_uuid\u0027)"},{"line_number":2230,"context_line":"    def test_get_share_info_fails_share_mapping_in_error("},{"line_number":2231,"context_line":"        self, mock_db, mock_instance, mock_log"},{"line_number":2232,"context_line":"    ):"},{"line_number":2233,"context_line":"        self.flags(shutdown_retry_interval\u003d20, group\u003d\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":48,"id":"14394448_6eaf33a4","line":2230,"updated":"2024-06-04 10:18:39.000000000","message":"it is not a failure any more. Do you have a test case with attaching/detaching state that really fails?","commit_id":"6ad8082d44471c1ecd13e1a331595e3971edb0d1"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"0878eccb78a663fb4da9031597c23964da8b145d","unresolved":false,"context_lines":[{"line_number":2227,"context_line":"    @mock.patch(\u0027nova.compute.manager.LOG\u0027, autospec\u003dTrue)"},{"line_number":2228,"context_line":"    @mock.patch(\u0027nova.objects.instance.Instance.save\u0027)"},{"line_number":2229,"context_line":"    @mock.patch(\u0027nova.objects.ShareMappingList.get_by_instance_uuid\u0027)"},{"line_number":2230,"context_line":"    def test_get_share_info_fails_share_mapping_in_error("},{"line_number":2231,"context_line":"        self, mock_db, mock_instance, mock_log"},{"line_number":2232,"context_line":"    ):"},{"line_number":2233,"context_line":"        self.flags(shutdown_retry_interval\u003d20, group\u003d\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":48,"id":"d7adc93e_d26c6911","line":2230,"in_reply_to":"14394448_6eaf33a4","updated":"2024-06-05 12:48:42.000000000","message":"Done","commit_id":"6ad8082d44471c1ecd13e1a331595e3971edb0d1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2c379a7666084e159ec819fbe5333563155cb30f","unresolved":true,"context_lines":[{"line_number":2267,"context_line":"                vm_state\u003dvm_states.ACTIVE,"},{"line_number":2268,"context_line":"                task_state\u003dtask_states.POWERING_OFF)"},{"line_number":2269,"context_line":"        mock_get_access.side_effect \u003d [None, self.get_fake_share_access()]"},{"line_number":2270,"context_line":"        compute_ip \u003d CONF.my_shared_fs_storage_ip"},{"line_number":2271,"context_line":"        share_mapping \u003d self.get_fake_share_mapping()"},{"line_number":2272,"context_line":"        self.compute.allow_share(self.context, instance, share_mapping)"},{"line_number":2273,"context_line":"        mock_get_access.assert_called_with("}],"source_content_type":"text/x-python","patch_set":48,"id":"7da1f385_fe3047fa","line":2270,"updated":"2024-06-04 10:18:39.000000000","message":"this did not caught the bug (using the block config) in the impl so this needs to be enhanced.","commit_id":"6ad8082d44471c1ecd13e1a331595e3971edb0d1"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"0878eccb78a663fb4da9031597c23964da8b145d","unresolved":false,"context_lines":[{"line_number":2267,"context_line":"                vm_state\u003dvm_states.ACTIVE,"},{"line_number":2268,"context_line":"                task_state\u003dtask_states.POWERING_OFF)"},{"line_number":2269,"context_line":"        mock_get_access.side_effect \u003d [None, self.get_fake_share_access()]"},{"line_number":2270,"context_line":"        compute_ip \u003d CONF.my_shared_fs_storage_ip"},{"line_number":2271,"context_line":"        share_mapping \u003d self.get_fake_share_mapping()"},{"line_number":2272,"context_line":"        self.compute.allow_share(self.context, instance, share_mapping)"},{"line_number":2273,"context_line":"        mock_get_access.assert_called_with("}],"source_content_type":"text/x-python","patch_set":48,"id":"6d5de331_9d82a6e0","line":2270,"in_reply_to":"7da1f385_fe3047fa","updated":"2024-06-05 12:48:42.000000000","message":"Done","commit_id":"6ad8082d44471c1ecd13e1a331595e3971edb0d1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2c379a7666084e159ec819fbe5333563155cb30f","unresolved":true,"context_lines":[{"line_number":2333,"context_line":"    def test_deny_share_in_error("},{"line_number":2334,"context_line":"        self, mock_db_get_share, mock_get_access, mock_deny, mock_db_delete"},{"line_number":2335,"context_line":"    ):"},{"line_number":2336,"context_line":"        \"\"\"Ensure we can deny a share in error on an instance."},{"line_number":2337,"context_line":"        \"\"\""},{"line_number":2338,"context_line":"        self.flags(shutdown_retry_interval\u003d20, group\u003d\u0027compute\u0027)"},{"line_number":2339,"context_line":"        instance \u003d fake_instance.fake_instance_obj("}],"source_content_type":"text/x-python","patch_set":48,"id":"1433a1ae_b56c2261","line":2336,"updated":"2024-06-04 10:18:39.000000000","message":"nit: on the instance detaching the share\n\njust to distinguish between this and the next test case","commit_id":"6ad8082d44471c1ecd13e1a331595e3971edb0d1"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"0878eccb78a663fb4da9031597c23964da8b145d","unresolved":false,"context_lines":[{"line_number":2333,"context_line":"    def test_deny_share_in_error("},{"line_number":2334,"context_line":"        self, mock_db_get_share, mock_get_access, mock_deny, mock_db_delete"},{"line_number":2335,"context_line":"    ):"},{"line_number":2336,"context_line":"        \"\"\"Ensure we can deny a share in error on an instance."},{"line_number":2337,"context_line":"        \"\"\""},{"line_number":2338,"context_line":"        self.flags(shutdown_retry_interval\u003d20, group\u003d\u0027compute\u0027)"},{"line_number":2339,"context_line":"        instance \u003d fake_instance.fake_instance_obj("}],"source_content_type":"text/x-python","patch_set":48,"id":"6d420c2d_2ab15988","line":2336,"in_reply_to":"1433a1ae_b56c2261","updated":"2024-06-05 12:48:42.000000000","message":"Done","commit_id":"6ad8082d44471c1ecd13e1a331595e3971edb0d1"}],"nova/tests/unit/compute/test_rpcapi.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":true,"context_lines":[{"line_number":1345,"context_line":"            \u0027cast\u0027,"},{"line_number":1346,"context_line":"            instance\u003dself.fake_instance_obj,"},{"line_number":1347,"context_line":"            share_mapping\u003dself.get_fake_share_mapping(),"},{"line_number":1348,"context_line":"            version\u003d\u00276.3\u0027)"},{"line_number":1349,"context_line":""},{"line_number":1350,"context_line":"    def test_deny_share(self):"},{"line_number":1351,"context_line":"        self._test_compute_api("},{"line_number":1352,"context_line":"            \u0027deny_share\u0027,"}],"source_content_type":"text/x-python","patch_set":51,"id":"5a892ba2_ffeec5f9","line":1349,"range":{"start_line":1348,"start_character":11,"end_line":1349,"end_character":1},"updated":"2024-07-03 15:44:55.000000000","message":"please bump it there too.","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"90415a456ead7a9dede22c817cfa7a392d967196","unresolved":false,"context_lines":[{"line_number":1345,"context_line":"            \u0027cast\u0027,"},{"line_number":1346,"context_line":"            instance\u003dself.fake_instance_obj,"},{"line_number":1347,"context_line":"            share_mapping\u003dself.get_fake_share_mapping(),"},{"line_number":1348,"context_line":"            version\u003d\u00276.3\u0027)"},{"line_number":1349,"context_line":""},{"line_number":1350,"context_line":"    def test_deny_share(self):"},{"line_number":1351,"context_line":"        self._test_compute_api("},{"line_number":1352,"context_line":"            \u0027deny_share\u0027,"}],"source_content_type":"text/x-python","patch_set":51,"id":"90d307e9_ec89aa1f","line":1349,"range":{"start_line":1348,"start_character":11,"end_line":1349,"end_character":1},"in_reply_to":"5a892ba2_ffeec5f9","updated":"2024-07-16 12:44:46.000000000","message":"Done","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":true,"context_lines":[{"line_number":1353,"context_line":"            \u0027cast\u0027,"},{"line_number":1354,"context_line":"            instance\u003dself.fake_instance_obj,"},{"line_number":1355,"context_line":"            share_mapping\u003dself.get_fake_share_mapping(),"},{"line_number":1356,"context_line":"            version\u003d\u00276.3\u0027)"}],"source_content_type":"text/x-python","patch_set":51,"id":"82298491_2321b26e","line":1356,"updated":"2024-07-03 15:44:55.000000000","message":"you could assert that older rpc versions return exceptions.","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"90415a456ead7a9dede22c817cfa7a392d967196","unresolved":false,"context_lines":[{"line_number":1353,"context_line":"            \u0027cast\u0027,"},{"line_number":1354,"context_line":"            instance\u003dself.fake_instance_obj,"},{"line_number":1355,"context_line":"            share_mapping\u003dself.get_fake_share_mapping(),"},{"line_number":1356,"context_line":"            version\u003d\u00276.3\u0027)"}],"source_content_type":"text/x-python","patch_set":51,"id":"a1748256_1c8fed55","line":1356,"in_reply_to":"82298491_2321b26e","updated":"2024-07-16 12:44:46.000000000","message":"Done","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6b51feb7d73a7c54691791b744721ab8613047f0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":50,"id":"d3d81358_c1e86aad","updated":"2024-06-18 12:13:44.000000000","message":"do we have test coverage somewhere that covers that the proper xml with the shares generated by _get_guest_config?","commit_id":"980cb1eb70ff4a48e13e429f9ae509cbfa83203d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"dd08e71083abbcf0340ccc90ab5ccff0dc5ee7ba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"57135940_489b591c","in_reply_to":"40a73621_b845bdd6","updated":"2024-07-02 11:22:44.000000000","message":".","commit_id":"980cb1eb70ff4a48e13e429f9ae509cbfa83203d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de0604173c65ce6140bb2b97ac076e260233757f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":50,"id":"40a73621_b845bdd6","in_reply_to":"c9506a6f_95b01c0b","updated":"2024-07-02 11:19:08.000000000","message":"cool. thanks.","commit_id":"980cb1eb70ff4a48e13e429f9ae509cbfa83203d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"bc559985c8550fc595ad69ea15ce83cb773d6044","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":50,"id":"c9506a6f_95b01c0b","in_reply_to":"d3d81358_c1e86aad","updated":"2024-06-20 08:23:45.000000000","message":"Yes this was already merged.\nhttps://review.opendev.org/c/openstack/nova/+/886522/comment/9be26210_99926b55/\n\nThis is also tested indirectly via the metadata tests.","commit_id":"980cb1eb70ff4a48e13e429f9ae509cbfa83203d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":16215,"context_line":"                       new\u003dmock.Mock())"},{"line_number":16216,"context_line":"    def test_spawn_with_pci_devices(self):"},{"line_number":16217,"context_line":"        class FakeLibvirtPciDevice(object):"},{"line_number":16218,"context_line":"            def detach(self):"},{"line_number":16219,"context_line":"                return None"},{"line_number":16220,"context_line":""},{"line_number":16221,"context_line":"            def reset(self):"}],"source_content_type":"text/x-python","patch_set":51,"id":"af7b072c_de094d16","line":16218,"updated":"2024-07-03 15:44:55.000000000","message":"necessary but unrelated change, but OK.","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"}],"nova/virt/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":908,"context_line":"        \"\"\""},{"line_number":909,"context_line":"        raise NotImplementedError()"},{"line_number":910,"context_line":""},{"line_number":911,"context_line":"    def power_off(self, context, instance, timeout\u003d0, retry_interval\u003d0,"},{"line_number":912,"context_line":"            share_info\u003dNone):"},{"line_number":913,"context_line":"        \"\"\"Power off the specified instance."},{"line_number":914,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1759e753_17137ee8","line":911,"range":{"start_line":911,"start_character":24,"end_line":911,"end_character":31},"updated":"2022-08-26 10:26:41.000000000","message":"Note to other reviewers: This is a new mandatory parameter, so _all_ the in tree virt drivers are updated to have a matching signature.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":915,"context_line":"        :param instance: nova.objects.instance.Instance"},{"line_number":916,"context_line":"        :param timeout: time to wait for GuestOS to shutdown"},{"line_number":917,"context_line":"        :param retry_interval: How often to signal guest while"},{"line_number":918,"context_line":"                               waiting for it to shutdown"},{"line_number":919,"context_line":"        \"\"\""},{"line_number":920,"context_line":"        raise NotImplementedError()"},{"line_number":921,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"38cc1e3f_267f9ad6","line":918,"updated":"2022-08-26 10:26:41.000000000","message":"1) please update the doc about the new params\n\n2) you need to send a mail to the ML to notify out of tree virt driver authors that the interface is changed. (Example: https://lists.openstack.org/pipermail/openstack-discuss/2020-July/015824.html ) Please draw attention to the fact that there is a new mandatory parameter passed (context).","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"b2d722a666e620802a0ea333bc06d35e111d268f","unresolved":true,"context_lines":[{"line_number":915,"context_line":"        :param instance: nova.objects.instance.Instance"},{"line_number":916,"context_line":"        :param timeout: time to wait for GuestOS to shutdown"},{"line_number":917,"context_line":"        :param retry_interval: How often to signal guest while"},{"line_number":918,"context_line":"                               waiting for it to shutdown"},{"line_number":919,"context_line":"        \"\"\""},{"line_number":920,"context_line":"        raise NotImplementedError()"},{"line_number":921,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"a4a4f6d5_b458fa2e","line":918,"in_reply_to":"070a91e4_fe1adfce","updated":"2024-02-13 10:41:30.000000000","message":"Please not that the method is modified anyway to pass the share_mapping. So a change will be done here.\nSo a good opportunity to make this method looks like the other.\nDo I convince you ? 😊","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc549e8712d4e482dd86fc3d41817799c2ae28d3","unresolved":true,"context_lines":[{"line_number":915,"context_line":"        :param instance: nova.objects.instance.Instance"},{"line_number":916,"context_line":"        :param timeout: time to wait for GuestOS to shutdown"},{"line_number":917,"context_line":"        :param retry_interval: How often to signal guest while"},{"line_number":918,"context_line":"                               waiting for it to shutdown"},{"line_number":919,"context_line":"        \"\"\""},{"line_number":920,"context_line":"        raise NotImplementedError()"},{"line_number":921,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"b0674510_0ab7a060","line":918,"in_reply_to":"38cc1e3f_267f9ad6","updated":"2023-01-24 18:20:52.000000000","message":"Do we have that mail sent?","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"bd337074246615eb0372f0d2f69c1447d958d328","unresolved":false,"context_lines":[{"line_number":915,"context_line":"        :param instance: nova.objects.instance.Instance"},{"line_number":916,"context_line":"        :param timeout: time to wait for GuestOS to shutdown"},{"line_number":917,"context_line":"        :param retry_interval: How often to signal guest while"},{"line_number":918,"context_line":"                               waiting for it to shutdown"},{"line_number":919,"context_line":"        \"\"\""},{"line_number":920,"context_line":"        raise NotImplementedError()"},{"line_number":921,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"512c87cc_0451d321","line":918,"in_reply_to":"3ad1f8e9_dd46f4f2","updated":"2024-05-15 16:26:58.000000000","message":"Done","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9f26bffd50e81c66c907365852c62ba2768e4719","unresolved":true,"context_lines":[{"line_number":915,"context_line":"        :param instance: nova.objects.instance.Instance"},{"line_number":916,"context_line":"        :param timeout: time to wait for GuestOS to shutdown"},{"line_number":917,"context_line":"        :param retry_interval: How often to signal guest while"},{"line_number":918,"context_line":"                               waiting for it to shutdown"},{"line_number":919,"context_line":"        \"\"\""},{"line_number":920,"context_line":"        raise NotImplementedError()"},{"line_number":921,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ce207be8_8febcdf4","line":918,"in_reply_to":"635b6d75_087a673f","updated":"2024-01-22 17:09:44.000000000","message":"It was needed in a previous version.\nYes, context is not required anymore.\n\nHowever, I would favor keeping this change because it is weird to have all methods passing a context except this one.\n\nPlease let me know if you really want me to remove it.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4128183b24798390366366d6652a359ddd699197","unresolved":true,"context_lines":[{"line_number":915,"context_line":"        :param instance: nova.objects.instance.Instance"},{"line_number":916,"context_line":"        :param timeout: time to wait for GuestOS to shutdown"},{"line_number":917,"context_line":"        :param retry_interval: How often to signal guest while"},{"line_number":918,"context_line":"                               waiting for it to shutdown"},{"line_number":919,"context_line":"        \"\"\""},{"line_number":920,"context_line":"        raise NotImplementedError()"},{"line_number":921,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"635b6d75_087a673f","line":918,"in_reply_to":"a16407aa_e3fec61e","updated":"2023-11-15 16:43:51.000000000","message":"Good point. I don\u0027t see the usage of the new context param either. So @Uggla could you please remove this change?\n\nOn the notifying the ML about virt changes: I can stop asking for it. I do remember it was something we did in the past hence the reflex.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ce6863a4b289cc1308f5dcc8bc1404d7d02e4a68","unresolved":true,"context_lines":[{"line_number":915,"context_line":"        :param instance: nova.objects.instance.Instance"},{"line_number":916,"context_line":"        :param timeout: time to wait for GuestOS to shutdown"},{"line_number":917,"context_line":"        :param retry_interval: How often to signal guest while"},{"line_number":918,"context_line":"                               waiting for it to shutdown"},{"line_number":919,"context_line":"        \"\"\""},{"line_number":920,"context_line":"        raise NotImplementedError()"},{"line_number":921,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3ad1f8e9_dd46f4f2","line":918,"in_reply_to":"a4a4f6d5_b458fa2e","updated":"2024-02-19 16:43:38.000000000","message":"I wont block on it :)","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2c922aec54715dda36d1907edab8322d0c1b70df","unresolved":true,"context_lines":[{"line_number":915,"context_line":"        :param instance: nova.objects.instance.Instance"},{"line_number":916,"context_line":"        :param timeout: time to wait for GuestOS to shutdown"},{"line_number":917,"context_line":"        :param retry_interval: How often to signal guest while"},{"line_number":918,"context_line":"                               waiting for it to shutdown"},{"line_number":919,"context_line":"        \"\"\""},{"line_number":920,"context_line":"        raise NotImplementedError()"},{"line_number":921,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"a16407aa_e3fec61e","line":918,"in_reply_to":"b0674510_0ab7a060","updated":"2023-06-09 16:57:57.000000000","message":"Aside from my usual complaint about acting like this is a stable API (and thus warning people when we change it)...I don\u0027t see that the new parameter context is actually being used in any implementation. Am I missing it or was it in a previous rev and no longer?\n\nEither way, I\u0027m not sure why we\u0027d need it as all the DB and interaction with other services really should be contained within compute manager. We do too much of that in our virt drivers anyway, but I\u0027m not seeing where in this implementation we even need it.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"50ecf68bb5f80ee95e7e01cbe03eda785f0d3e25","unresolved":true,"context_lines":[{"line_number":915,"context_line":"        :param instance: nova.objects.instance.Instance"},{"line_number":916,"context_line":"        :param timeout: time to wait for GuestOS to shutdown"},{"line_number":917,"context_line":"        :param retry_interval: How often to signal guest while"},{"line_number":918,"context_line":"                               waiting for it to shutdown"},{"line_number":919,"context_line":"        \"\"\""},{"line_number":920,"context_line":"        raise NotImplementedError()"},{"line_number":921,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"070a91e4_fe1adfce","line":918,"in_reply_to":"ce207be8_8febcdf4","updated":"2024-01-29 18:18:36.000000000","message":"Drop it to discourage API usage from the driver.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"60403221610a97a785158ebfee52d71dbb55f72b","unresolved":true,"context_lines":[{"line_number":157,"context_line":"        os_traits.COMPUTE_EPHEMERAL_ENCRYPTION_LUKS,"},{"line_number":158,"context_line":"    \"supports_ephemeral_encryption_plain\":"},{"line_number":159,"context_line":"        os_traits.COMPUTE_EPHEMERAL_ENCRYPTION_PLAIN,"},{"line_number":160,"context_line":"    \"supports_virtio_fs\": os_traits.COMPUTE_STORAGE_VIRTIO_FS,"},{"line_number":161,"context_line":"    \"supports_mem_backing_file\": os_traits.COMPUTE_MEM_BACKING_FILE,"},{"line_number":162,"context_line":"}"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"af47e39a_e3f79d47","line":161,"range":{"start_line":160,"start_character":0,"end_line":161,"end_character":68},"updated":"2023-02-10 14:11:37.000000000","message":"These traits only exists since os-traits 2.10.0 [1] so you need to bump the os-traits minimum requirements in 2.10.0 in nova. But to be able to land that we need to land the global requirements bump first. Which is currently blocked by https://review.opendev.org/c/openstack/requirements/+/872065 \n\n[1] https://review.opendev.org/c/openstack/releases/+/873106","commit_id":"ab2373a3e2d41012ac9e8596d889f0612ff960f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4128183b24798390366366d6652a359ddd699197","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        os_traits.COMPUTE_EPHEMERAL_ENCRYPTION_LUKS,"},{"line_number":158,"context_line":"    \"supports_ephemeral_encryption_plain\":"},{"line_number":159,"context_line":"        os_traits.COMPUTE_EPHEMERAL_ENCRYPTION_PLAIN,"},{"line_number":160,"context_line":"    \"supports_virtio_fs\": os_traits.COMPUTE_STORAGE_VIRTIO_FS,"},{"line_number":161,"context_line":"    \"supports_mem_backing_file\": os_traits.COMPUTE_MEM_BACKING_FILE,"},{"line_number":162,"context_line":"}"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"a1bbe526_c18c7a13","line":161,"range":{"start_line":160,"start_character":0,"end_line":161,"end_character":68},"in_reply_to":"439ae604_0b6ffc5d","updated":"2023-11-15 16:43:51.000000000","message":"Done","commit_id":"ab2373a3e2d41012ac9e8596d889f0612ff960f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0781dc190326db22bab6441bdcd9c2b38257f12b","unresolved":true,"context_lines":[{"line_number":157,"context_line":"        os_traits.COMPUTE_EPHEMERAL_ENCRYPTION_LUKS,"},{"line_number":158,"context_line":"    \"supports_ephemeral_encryption_plain\":"},{"line_number":159,"context_line":"        os_traits.COMPUTE_EPHEMERAL_ENCRYPTION_PLAIN,"},{"line_number":160,"context_line":"    \"supports_virtio_fs\": os_traits.COMPUTE_STORAGE_VIRTIO_FS,"},{"line_number":161,"context_line":"    \"supports_mem_backing_file\": os_traits.COMPUTE_MEM_BACKING_FILE,"},{"line_number":162,"context_line":"}"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"439ae604_0b6ffc5d","line":161,"range":{"start_line":160,"start_character":0,"end_line":161,"end_character":68},"in_reply_to":"af47e39a_e3f79d47","updated":"2023-02-10 14:21:52.000000000","message":"Sorry I mixed up the traits. These traits are in os-traits 2.8.0 so we are good.","commit_id":"ab2373a3e2d41012ac9e8596d889f0612ff960f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4128183b24798390366366d6652a359ddd699197","unresolved":true,"context_lines":[{"line_number":954,"context_line":"        :param block_device_info: instance volume block device info"},{"line_number":955,"context_line":"        :param accel_info: List of accelerator request dicts. The exact"},{"line_number":956,"context_line":"            data struct is doc\u0027d in nova/virt/driver.py::spawn()."},{"line_number":957,"context_line":"        :param share_info: intance share attached list."},{"line_number":958,"context_line":"        \"\"\""},{"line_number":959,"context_line":"        raise NotImplementedError()"},{"line_number":960,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"2768c121_f04f5fb6","line":957,"updated":"2023-11-15 16:43:51.000000000","message":"```\n:param share_info: a ShareMappingList containing the attached shares\n```","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9f26bffd50e81c66c907365852c62ba2768e4719","unresolved":false,"context_lines":[{"line_number":954,"context_line":"        :param block_device_info: instance volume block device info"},{"line_number":955,"context_line":"        :param accel_info: List of accelerator request dicts. The exact"},{"line_number":956,"context_line":"            data struct is doc\u0027d in nova/virt/driver.py::spawn()."},{"line_number":957,"context_line":"        :param share_info: intance share attached list."},{"line_number":958,"context_line":"        \"\"\""},{"line_number":959,"context_line":"        raise NotImplementedError()"},{"line_number":960,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"9fa741eb_15a362a5","line":957,"in_reply_to":"2768c121_f04f5fb6","updated":"2024-01-22 17:09:44.000000000","message":"Done","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f9a9ee6245aa579e214200c360489c9c7e405061","unresolved":true,"context_lines":[{"line_number":958,"context_line":"        \"\"\""},{"line_number":959,"context_line":"        raise NotImplementedError()"},{"line_number":960,"context_line":""},{"line_number":961,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":962,"context_line":"        \"\"\"Mount a manila share to the compute node."},{"line_number":963,"context_line":""},{"line_number":964,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":42,"id":"587342e7_f465112e","line":961,"updated":"2024-02-25 22:49:43.000000000","message":"these driver methods will nolonger be needed","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":true,"context_lines":[{"line_number":958,"context_line":"        \"\"\""},{"line_number":959,"context_line":"        raise NotImplementedError()"},{"line_number":960,"context_line":""},{"line_number":961,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":962,"context_line":"        \"\"\"Mount a manila share to the compute node."},{"line_number":963,"context_line":""},{"line_number":964,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":42,"id":"99a726b8_ea2c8e91","line":961,"in_reply_to":"587342e7_f465112e","updated":"2024-02-28 13:13:31.000000000","message":"they are still used in the compute manager\u0027s _mount_share call","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4f490fd9fd287eac04ee6dde71911c5809db2a1c","unresolved":false,"context_lines":[{"line_number":958,"context_line":"        \"\"\""},{"line_number":959,"context_line":"        raise NotImplementedError()"},{"line_number":960,"context_line":""},{"line_number":961,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":962,"context_line":"        \"\"\"Mount a manila share to the compute node."},{"line_number":963,"context_line":""},{"line_number":964,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":42,"id":"7cad0e13_eaa8c457","line":961,"in_reply_to":"99a726b8_ea2c8e91","updated":"2024-06-19 14:13:04.000000000","message":"Acknowledged","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":1380,"context_line":"        NOTE: Unlike the libvirt driver, this method does not delete"},{"line_number":1381,"context_line":"              and recreate the instance; it preserves local state."},{"line_number":1382,"context_line":""},{"line_number":1383,"context_line":"        :param instance: The instance object."},{"line_number":1384,"context_line":"        :param timeout: time to wait for node to shutdown. If it is set,"},{"line_number":1385,"context_line":"            soft power off is attempted before hard power off."},{"line_number":1386,"context_line":"        :param retry_interval: How often to signal node while waiting"}],"source_content_type":"text/x-python","patch_set":12,"id":"c6eb7c6d_9817de60","line":1383,"updated":"2022-08-26 10:26:41.000000000","message":"please extend the doc","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":false,"context_lines":[{"line_number":1380,"context_line":"        NOTE: Unlike the libvirt driver, this method does not delete"},{"line_number":1381,"context_line":"              and recreate the instance; it preserves local state."},{"line_number":1382,"context_line":""},{"line_number":1383,"context_line":"        :param instance: The instance object."},{"line_number":1384,"context_line":"        :param timeout: time to wait for node to shutdown. If it is set,"},{"line_number":1385,"context_line":"            soft power off is attempted before hard power off."},{"line_number":1386,"context_line":"        :param retry_interval: How often to signal node while waiting"}],"source_content_type":"text/x-python","patch_set":12,"id":"66c0ed74_c276971f","line":1383,"in_reply_to":"c6eb7c6d_9817de60","updated":"2022-08-31 14:51:42.000000000","message":"Done","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"}],"nova/virt/libvirt/config.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":1510,"context_line":"        elif self.source_type \u003d\u003d \"block\":"},{"line_number":1511,"context_line":"            dev.append(etree.Element(\"source\", dev\u003dself.source_dev))"},{"line_number":1512,"context_line":"        elif self.source_type \u003d\u003d \"mount\" and self.driver_type \u003d\u003d \"virtiofs\":"},{"line_number":1513,"context_line":"            dev.append(etree.Element(\"driver\", type \u003d self.driver_type))"},{"line_number":1514,"context_line":"            dev.append(etree.Element(\"source\", dir\u003dself.source_dir))"},{"line_number":1515,"context_line":"        else:"},{"line_number":1516,"context_line":"            dev.append(etree.Element(\"source\", dir\u003dself.source_dir))"}],"source_content_type":"text/x-python","patch_set":12,"id":"4e132693_2411c4f5","line":1513,"range":{"start_line":1513,"start_character":51,"end_line":1513,"end_character":54},"updated":"2022-08-26 10:26:41.000000000","message":"type\u003dself...","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":false,"context_lines":[{"line_number":1510,"context_line":"        elif self.source_type \u003d\u003d \"block\":"},{"line_number":1511,"context_line":"            dev.append(etree.Element(\"source\", dev\u003dself.source_dev))"},{"line_number":1512,"context_line":"        elif self.source_type \u003d\u003d \"mount\" and self.driver_type \u003d\u003d \"virtiofs\":"},{"line_number":1513,"context_line":"            dev.append(etree.Element(\"driver\", type \u003d self.driver_type))"},{"line_number":1514,"context_line":"            dev.append(etree.Element(\"source\", dir\u003dself.source_dir))"},{"line_number":1515,"context_line":"        else:"},{"line_number":1516,"context_line":"            dev.append(etree.Element(\"source\", dir\u003dself.source_dir))"}],"source_content_type":"text/x-python","patch_set":12,"id":"ab36d408_ad7d823b","line":1513,"range":{"start_line":1513,"start_character":51,"end_line":1513,"end_character":54},"in_reply_to":"4e132693_2411c4f5","updated":"2022-08-31 14:51:42.000000000","message":"Done","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":831,"context_line":"            \u0027supports_remote_managed_ports\u0027:"},{"line_number":832,"context_line":"            self._host.supports_remote_managed_ports,"},{"line_number":833,"context_line":"            \u0027supports_virtio_fs\u0027: self._host.supports_virtio_fs,"},{"line_number":834,"context_line":"            \u0027supports_mem_backing_file\u0027: self._host.supports_mem_backing_file"},{"line_number":835,"context_line":"        })"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"    def _register_all_undefined_instance_details(self) -\u003e None:"}],"source_content_type":"text/x-python","patch_set":12,"id":"bf592e1d_be2cdba6","line":834,"updated":"2022-08-26 10:26:41.000000000","message":"note to the reviewers: this is not a new check it is just moved from init_host and called through self._host but eventually this calls _check_file_backed_memory_support as before","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":3928,"context_line":"            vifs_already_plugged \u003d False"},{"line_number":3929,"context_line":""},{"line_number":3930,"context_line":"        try:"},{"line_number":3931,"context_line":"            self._mount_share(context, instance, share_info)"},{"line_number":3932,"context_line":""},{"line_number":3933,"context_line":"            # NOTE(efried): The instance should already have a vtpm_secret_uuid"},{"line_number":3934,"context_line":"            # registered if appropriate."}],"source_content_type":"text/x-python","patch_set":12,"id":"6e9ad0e5_dc456709","line":3931,"updated":"2022-08-26 10:26:41.000000000","message":"so during hard reboot we potentially mounting an already mounted share.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":true,"context_lines":[{"line_number":3928,"context_line":"            vifs_already_plugged \u003d False"},{"line_number":3929,"context_line":""},{"line_number":3930,"context_line":"        try:"},{"line_number":3931,"context_line":"            self._mount_share(context, instance, share_info)"},{"line_number":3932,"context_line":""},{"line_number":3933,"context_line":"            # NOTE(efried): The instance should already have a vtpm_secret_uuid"},{"line_number":3934,"context_line":"            # registered if appropriate."}],"source_content_type":"text/x-python","patch_set":12,"id":"da4c7be5_4c920958","line":3931,"in_reply_to":"6e9ad0e5_dc456709","updated":"2022-08-31 14:51:42.000000000","message":"The underlying https://github.com/openstack/nova/blob/8f250f50446ca2d7aa84609d5144088aa4cded78/nova/virt/libvirt/volume/mount.py#L152-L174 should handle such kind of cases.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc549e8712d4e482dd86fc3d41817799c2ae28d3","unresolved":false,"context_lines":[{"line_number":3928,"context_line":"            vifs_already_plugged \u003d False"},{"line_number":3929,"context_line":""},{"line_number":3930,"context_line":"        try:"},{"line_number":3931,"context_line":"            self._mount_share(context, instance, share_info)"},{"line_number":3932,"context_line":""},{"line_number":3933,"context_line":"            # NOTE(efried): The instance should already have a vtpm_secret_uuid"},{"line_number":3934,"context_line":"            # registered if appropriate."}],"source_content_type":"text/x-python","patch_set":12,"id":"8cf01baf_b36b9321","line":3931,"in_reply_to":"da4c7be5_4c920958","updated":"2023-01-24 18:20:52.000000000","message":"Ack","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":4041,"context_line":"                 timeout, instance\u003dinstance)"},{"line_number":4042,"context_line":"        return False"},{"line_number":4043,"context_line":""},{"line_number":4044,"context_line":"    def power_off(self, context, instance, timeout\u003d0, retry_interval\u003d0,"},{"line_number":4045,"context_line":"        share_info\u003dNone):"},{"line_number":4046,"context_line":"        \"\"\"Power off the specified instance.\"\"\""},{"line_number":4047,"context_line":"        if timeout:"},{"line_number":4048,"context_line":"            self._clean_shutdown(instance, timeout, retry_interval)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a73f1c6_ef35ef2f","line":4045,"range":{"start_line":4044,"start_character":0,"end_line":4045,"end_character":25},"updated":"2022-08-26 10:26:41.000000000","message":"I would format this like: \n\n    def power_off(\n        self, context, instance, timeout\u003d0, retry_interval\u003d0, share_info\u003dNone\n    ):","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":false,"context_lines":[{"line_number":4041,"context_line":"                 timeout, instance\u003dinstance)"},{"line_number":4042,"context_line":"        return False"},{"line_number":4043,"context_line":""},{"line_number":4044,"context_line":"    def power_off(self, context, instance, timeout\u003d0, retry_interval\u003d0,"},{"line_number":4045,"context_line":"        share_info\u003dNone):"},{"line_number":4046,"context_line":"        \"\"\"Power off the specified instance.\"\"\""},{"line_number":4047,"context_line":"        if timeout:"},{"line_number":4048,"context_line":"            self._clean_shutdown(instance, timeout, retry_interval)"}],"source_content_type":"text/x-python","patch_set":12,"id":"89340919_c962f736","line":4045,"range":{"start_line":4044,"start_character":0,"end_line":4045,"end_character":25},"in_reply_to":"1a73f1c6_ef35ef2f","updated":"2022-08-31 14:51:42.000000000","message":"Done","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":7337,"context_line":"                       image_meta, rescue\u003dNone,"},{"line_number":7338,"context_line":"                       block_device_info\u003dNone,"},{"line_number":7339,"context_line":"                       mdevs\u003dNone, accel_info\u003dNone,"},{"line_number":7340,"context_line":"                       share_info\u003dNone):"},{"line_number":7341,"context_line":"        # NOTE(danms): Stringifying a NetworkInfo will take a lock. Do"},{"line_number":7342,"context_line":"        # this ahead of time so that we don\u0027t acquire it while also"},{"line_number":7343,"context_line":"        # holding the logging lock."}],"source_content_type":"text/x-python","patch_set":12,"id":"215446a2_d156f1b2","line":7340,"updated":"2022-08-26 10:26:41.000000000","message":"you have to check all direct or indirect caller of this function in the driver to see what actions cause the xml to be regenerated. Then you need to decide in what case it is OK not to have the shares included in the new guest definition. For example rescue() will regenerate the guest xml and it probably needs to include the shares to the new xml.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"6aa44d7538b4d5d6ad21778525b876790309e0f5","unresolved":false,"context_lines":[{"line_number":7337,"context_line":"                       image_meta, rescue\u003dNone,"},{"line_number":7338,"context_line":"                       block_device_info\u003dNone,"},{"line_number":7339,"context_line":"                       mdevs\u003dNone, accel_info\u003dNone,"},{"line_number":7340,"context_line":"                       share_info\u003dNone):"},{"line_number":7341,"context_line":"        # NOTE(danms): Stringifying a NetworkInfo will take a lock. Do"},{"line_number":7342,"context_line":"        # this ahead of time so that we don\u0027t acquire it while also"},{"line_number":7343,"context_line":"        # holding the logging lock."}],"source_content_type":"text/x-python","patch_set":12,"id":"6d10303a_231b05b3","line":7340,"in_reply_to":"215446a2_d156f1b2","updated":"2022-10-05 08:36:37.000000000","message":"The impacted methods are resume and rescue. This is done in the following patches:\n860284, 860285, 860287, 860288.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":7531,"context_line":"        external_events: ty.Optional[ty.List[ty.Tuple[str, str]]] \u003d None,"},{"line_number":7532,"context_line":"        cleanup_instance_dir: bool \u003d False,"},{"line_number":7533,"context_line":"        cleanup_instance_disks: bool \u003d False,"},{"line_number":7534,"context_line":"        share_info: ty.List[ShareMappingLibvirt] \u003d None"},{"line_number":7535,"context_line":"    ) -\u003e libvirt_guest.Guest:"},{"line_number":7536,"context_line":"        \"\"\"Do required network setup and create domain.\"\"\""},{"line_number":7537,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9cca695c_aa3994c9","line":7534,"updated":"2022-08-26 10:26:41.000000000","message":"this seems to be unused here","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":false,"context_lines":[{"line_number":7531,"context_line":"        external_events: ty.Optional[ty.List[ty.Tuple[str, str]]] \u003d None,"},{"line_number":7532,"context_line":"        cleanup_instance_dir: bool \u003d False,"},{"line_number":7533,"context_line":"        cleanup_instance_disks: bool \u003d False,"},{"line_number":7534,"context_line":"        share_info: ty.List[ShareMappingLibvirt] \u003d None"},{"line_number":7535,"context_line":"    ) -\u003e libvirt_guest.Guest:"},{"line_number":7536,"context_line":"        \"\"\"Do required network setup and create domain.\"\"\""},{"line_number":7537,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7c890e3b_f1620211","line":7534,"in_reply_to":"9cca695c_aa3994c9","updated":"2022-08-31 14:51:42.000000000","message":"Done","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":11256,"context_line":"                raise exception.InstanceFaultRollback("},{"line_number":11257,"context_line":"                    exception.ResizeError(reason\u003dreason))"},{"line_number":11258,"context_line":""},{"line_number":11259,"context_line":"        self.power_off(context, instance, timeout, retry_interval)"},{"line_number":11260,"context_line":"        self.unplug_vifs(instance, network_info)"},{"line_number":11261,"context_line":"        block_device_mapping \u003d driver.block_device_info_get_mapping("},{"line_number":11262,"context_line":"            block_device_info)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1d1df88c_b3ceb552","line":11259,"updated":"2022-08-26 10:26:41.000000000","message":"wait, so during cold migrate we won\u0027t unmount the share on the source?","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":true,"context_lines":[{"line_number":11256,"context_line":"                raise exception.InstanceFaultRollback("},{"line_number":11257,"context_line":"                    exception.ResizeError(reason\u003dreason))"},{"line_number":11258,"context_line":""},{"line_number":11259,"context_line":"        self.power_off(context, instance, timeout, retry_interval)"},{"line_number":11260,"context_line":"        self.unplug_vifs(instance, network_info)"},{"line_number":11261,"context_line":"        block_device_mapping \u003d driver.block_device_info_get_mapping("},{"line_number":11262,"context_line":"            block_device_info)"}],"source_content_type":"text/x-python","patch_set":12,"id":"632a44b2_e32b5709","line":11259,"in_reply_to":"1d1df88c_b3ceb552","updated":"2022-08-31 14:51:42.000000000","message":"Within this version migrate operations are not supported with instances holding shares.\nSo that\u0027s the reason why there are places using power_off method, that are not changed.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bc549e8712d4e482dd86fc3d41817799c2ae28d3","unresolved":false,"context_lines":[{"line_number":11256,"context_line":"                raise exception.InstanceFaultRollback("},{"line_number":11257,"context_line":"                    exception.ResizeError(reason\u003dreason))"},{"line_number":11258,"context_line":""},{"line_number":11259,"context_line":"        self.power_off(context, instance, timeout, retry_interval)"},{"line_number":11260,"context_line":"        self.unplug_vifs(instance, network_info)"},{"line_number":11261,"context_line":"        block_device_mapping \u003d driver.block_device_info_get_mapping("},{"line_number":11262,"context_line":"            block_device_info)"}],"source_content_type":"text/x-python","patch_set":12,"id":"362ed92f_48f2edd3","line":11259,"in_reply_to":"4b4a416a_faebfa93","updated":"2023-01-24 18:20:52.000000000","message":"Ack","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"11108d787970607ec6a2164842a5d0080116fa14","unresolved":true,"context_lines":[{"line_number":11256,"context_line":"                raise exception.InstanceFaultRollback("},{"line_number":11257,"context_line":"                    exception.ResizeError(reason\u003dreason))"},{"line_number":11258,"context_line":""},{"line_number":11259,"context_line":"        self.power_off(context, instance, timeout, retry_interval)"},{"line_number":11260,"context_line":"        self.unplug_vifs(instance, network_info)"},{"line_number":11261,"context_line":"        block_device_mapping \u003d driver.block_device_info_get_mapping("},{"line_number":11262,"context_line":"            block_device_info)"}],"source_content_type":"text/x-python","patch_set":12,"id":"d3b3a087_adf0706a","line":11259,"in_reply_to":"632a44b2_e32b5709","updated":"2022-09-01 09:41:34.000000000","message":"OK.\nDid you added a check in that prevents starting a migration if the instance has shares?","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"233b811f8a15e3e9ef503548927b52520fa0149f","unresolved":true,"context_lines":[{"line_number":11256,"context_line":"                raise exception.InstanceFaultRollback("},{"line_number":11257,"context_line":"                    exception.ResizeError(reason\u003dreason))"},{"line_number":11258,"context_line":""},{"line_number":11259,"context_line":"        self.power_off(context, instance, timeout, retry_interval)"},{"line_number":11260,"context_line":"        self.unplug_vifs(instance, network_info)"},{"line_number":11261,"context_line":"        block_device_mapping \u003d driver.block_device_info_get_mapping("},{"line_number":11262,"context_line":"            block_device_info)"}],"source_content_type":"text/x-python","patch_set":12,"id":"4b4a416a_faebfa93","line":11259,"in_reply_to":"d3b3a087_adf0706a","updated":"2022-09-14 07:48:26.000000000","message":"Yep it is in next patches.\nhttps://review.opendev.org/c/openstack/nova/+/850499","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":12237,"context_line":"        share_drv_info \u003d []"},{"line_number":12238,"context_line":""},{"line_number":12239,"context_line":"        def create_driver_protocol_object(context, instance, share):"},{"line_number":12240,"context_line":"            if share.share_proto \u003d\u003d \u0027NFS\u0027:"},{"line_number":12241,"context_line":"                sml_nfs \u003d objects.ShareMappingLibvirtNFS.from_share_mapping("},{"line_number":12242,"context_line":"                        context,"},{"line_number":12243,"context_line":"                        instance,"}],"source_content_type":"text/x-python","patch_set":12,"id":"36b8cc61_cb2b7d0c","line":12240,"updated":"2022-08-26 10:26:41.000000000","message":"I would move this logic to ShareMappingLibvirt.from_share_mapping factory. Create a share_proto - child class mapping there and move this condition there too.\n\nSo what remains here is to call the ShareMappingLibvirt.from_share_mapping() factory to downcast a ShareMapping to the proper driver+proto child class.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":false,"context_lines":[{"line_number":12237,"context_line":"        share_drv_info \u003d []"},{"line_number":12238,"context_line":""},{"line_number":12239,"context_line":"        def create_driver_protocol_object(context, instance, share):"},{"line_number":12240,"context_line":"            if share.share_proto \u003d\u003d \u0027NFS\u0027:"},{"line_number":12241,"context_line":"                sml_nfs \u003d objects.ShareMappingLibvirtNFS.from_share_mapping("},{"line_number":12242,"context_line":"                        context,"},{"line_number":12243,"context_line":"                        instance,"}],"source_content_type":"text/x-python","patch_set":12,"id":"6d5948fd_91d35178","line":12240,"in_reply_to":"36b8cc61_cb2b7d0c","updated":"2022-08-31 14:51:42.000000000","message":"Done","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":12248,"context_line":"                        share_proto\u003dshare.share_proto)"},{"line_number":12249,"context_line":""},{"line_number":12250,"context_line":"        if share_info:"},{"line_number":12251,"context_line":"            for share in share_info:"},{"line_number":12252,"context_line":"                share_mapping_driver \u003d create_driver_protocol_object("},{"line_number":12253,"context_line":"                        context, instance, share)"},{"line_number":12254,"context_line":"                share_drv_info.append(share_mapping_driver)"}],"source_content_type":"text/x-python","patch_set":12,"id":"b162a373_531e1e83","line":12251,"updated":"2022-08-26 10:26:41.000000000","message":"I wondering if all these looping here and below can be moved to the ShareMappingList object. (Just think about it, would it make sense to call share_info.convert() share_info.mount_all(), share_info.umount_all())","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"233b811f8a15e3e9ef503548927b52520fa0149f","unresolved":false,"context_lines":[{"line_number":12248,"context_line":"                        share_proto\u003dshare.share_proto)"},{"line_number":12249,"context_line":""},{"line_number":12250,"context_line":"        if share_info:"},{"line_number":12251,"context_line":"            for share in share_info:"},{"line_number":12252,"context_line":"                share_mapping_driver \u003d create_driver_protocol_object("},{"line_number":12253,"context_line":"                        context, instance, share)"},{"line_number":12254,"context_line":"                share_drv_info.append(share_mapping_driver)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bed5147f_7daf08b5","line":12251,"in_reply_to":"5bb4052e_fca81c33","updated":"2022-09-14 07:48:26.000000000","message":"Done, yep it looks better.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":true,"context_lines":[{"line_number":12248,"context_line":"                        share_proto\u003dshare.share_proto)"},{"line_number":12249,"context_line":""},{"line_number":12250,"context_line":"        if share_info:"},{"line_number":12251,"context_line":"            for share in share_info:"},{"line_number":12252,"context_line":"                share_mapping_driver \u003d create_driver_protocol_object("},{"line_number":12253,"context_line":"                        context, instance, share)"},{"line_number":12254,"context_line":"                share_drv_info.append(share_mapping_driver)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5bb4052e_fca81c33","line":12251,"in_reply_to":"b162a373_531e1e83","updated":"2022-08-31 14:51:42.000000000","message":"I am leaving this untouched for the moment. But it makes sense. I need to clean up most of the comments first to get some distance. Then I will probably modify this in a second round.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":12255,"context_line":""},{"line_number":12256,"context_line":"        return share_drv_info"},{"line_number":12257,"context_line":""},{"line_number":12258,"context_line":"    def _mount_share(self, context, instance, share_info):"},{"line_number":12259,"context_line":"        if share_info:"},{"line_number":12260,"context_line":"            for share in share_info:"},{"line_number":12261,"context_line":"                share.attach(\u0027active\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"190a2e45_80363015","line":12258,"updated":"2022-08-26 10:26:41.000000000","message":"Do we need a check somewhere that if the instance is on a host that has not configured with file backed memory then this mount will not work?","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"11108d787970607ec6a2164842a5d0080116fa14","unresolved":false,"context_lines":[{"line_number":12255,"context_line":""},{"line_number":12256,"context_line":"        return share_drv_info"},{"line_number":12257,"context_line":""},{"line_number":12258,"context_line":"    def _mount_share(self, context, instance, share_info):"},{"line_number":12259,"context_line":"        if share_info:"},{"line_number":12260,"context_line":"            for share in share_info:"},{"line_number":12261,"context_line":"                share.attach(\u0027active\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"2f659105_d8e6cd42","line":12258,"in_reply_to":"0a03a8bc_b1e13229","updated":"2022-09-01 09:41:34.000000000","message":"OK, so the API wont allow creating a sharemapping for an instance if the instance is not on a \"good\" host. So if we end up here that means the API saw that we are on a \"good\" host.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":true,"context_lines":[{"line_number":12255,"context_line":""},{"line_number":12256,"context_line":"        return share_drv_info"},{"line_number":12257,"context_line":""},{"line_number":12258,"context_line":"    def _mount_share(self, context, instance, share_info):"},{"line_number":12259,"context_line":"        if share_info:"},{"line_number":12260,"context_line":"            for share in share_info:"},{"line_number":12261,"context_line":"                share.attach(\u0027active\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"0a03a8bc_b1e13229","line":12258,"in_reply_to":"190a2e45_80363015","updated":"2022-08-31 14:51:42.000000000","message":"This is handled in the API. You can not manipulate shares if host and or instance are not properly configured.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":12258,"context_line":"    def _mount_share(self, context, instance, share_info):"},{"line_number":12259,"context_line":"        if share_info:"},{"line_number":12260,"context_line":"            for share in share_info:"},{"line_number":12261,"context_line":"                share.attach(\u0027active\u0027)"},{"line_number":12262,"context_line":""},{"line_number":12263,"context_line":"    def _umount_share(self, context, instance, share_info):"},{"line_number":12264,"context_line":"        if share_info:"}],"source_content_type":"text/x-python","patch_set":12,"id":"e790b6fc_35252106","line":12261,"updated":"2022-08-26 10:26:41.000000000","message":"hm, if we always attach with \"active\" then why we need to pass \"active\"?","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"233b811f8a15e3e9ef503548927b52520fa0149f","unresolved":false,"context_lines":[{"line_number":12258,"context_line":"    def _mount_share(self, context, instance, share_info):"},{"line_number":12259,"context_line":"        if share_info:"},{"line_number":12260,"context_line":"            for share in share_info:"},{"line_number":12261,"context_line":"                share.attach(\u0027active\u0027)"},{"line_number":12262,"context_line":""},{"line_number":12263,"context_line":"    def _umount_share(self, context, instance, share_info):"},{"line_number":12264,"context_line":"        if share_info:"}],"source_content_type":"text/x-python","patch_set":12,"id":"f25305e8_695325f6","line":12261,"in_reply_to":"64ecd7b8_95ec5712","updated":"2022-09-14 07:48:26.000000000","message":"Done","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":true,"context_lines":[{"line_number":12258,"context_line":"    def _mount_share(self, context, instance, share_info):"},{"line_number":12259,"context_line":"        if share_info:"},{"line_number":12260,"context_line":"            for share in share_info:"},{"line_number":12261,"context_line":"                share.attach(\u0027active\u0027)"},{"line_number":12262,"context_line":""},{"line_number":12263,"context_line":"    def _umount_share(self, context, instance, share_info):"},{"line_number":12264,"context_line":"        if share_info:"}],"source_content_type":"text/x-python","patch_set":12,"id":"64ecd7b8_95ec5712","line":12261,"in_reply_to":"e790b6fc_35252106","updated":"2022-08-31 14:51:42.000000000","message":"So the first call to attach happens creating the share mapping in the database, and it will set the share \u0027inactive\u0027 (api part).\nThe \"next\" call is powering on the instance, it set the share mapping to active.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"463b02601871753275ecf48a603256257c90142b","unresolved":true,"context_lines":[{"line_number":3880,"context_line":"        OS cannot ignore this action."},{"line_number":3881,"context_line":"        \"\"\""},{"line_number":3882,"context_line":"        if share_info is None:"},{"line_number":3883,"context_line":"            share_info \u003d osm.ShareMappingList()"},{"line_number":3884,"context_line":"        # NOTE(sbauza): Since we undefine the guest XML when destroying, we"},{"line_number":3885,"context_line":"        # need to remember the existing mdevs for reusing them."},{"line_number":3886,"context_line":"        mdevs \u003d self._get_all_assigned_mediated_devices(instance)"}],"source_content_type":"text/x-python","patch_set":28,"id":"c49d31df_cd9cbb10","line":3883,"range":{"start_line":3883,"start_character":25,"end_line":3883,"end_character":28},"updated":"2023-03-10 16:53:27.000000000","message":"nit: you can use the already imported `objects` to access `objects.ShareMappingList()`. (I know that IDEs doesn\u0027t offer that as we do the exposing of the objects there dynamically)","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"34e669f3ac84d65720ca12c38644ba433dced8a7","unresolved":false,"context_lines":[{"line_number":3880,"context_line":"        OS cannot ignore this action."},{"line_number":3881,"context_line":"        \"\"\""},{"line_number":3882,"context_line":"        if share_info is None:"},{"line_number":3883,"context_line":"            share_info \u003d osm.ShareMappingList()"},{"line_number":3884,"context_line":"        # NOTE(sbauza): Since we undefine the guest XML when destroying, we"},{"line_number":3885,"context_line":"        # need to remember the existing mdevs for reusing them."},{"line_number":3886,"context_line":"        mdevs \u003d self._get_all_assigned_mediated_devices(instance)"}],"source_content_type":"text/x-python","patch_set":28,"id":"b81e7069_1cb6367d","line":3883,"range":{"start_line":3883,"start_character":25,"end_line":3883,"end_character":28},"in_reply_to":"c49d31df_cd9cbb10","updated":"2023-04-11 17:47:39.000000000","message":"Done","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"463b02601871753275ecf48a603256257c90142b","unresolved":true,"context_lines":[{"line_number":4081,"context_line":"    def power_on(self, context, instance, network_info,"},{"line_number":4082,"context_line":"                 block_device_info\u003dNone, accel_info\u003dNone, share_info\u003dNone):"},{"line_number":4083,"context_line":"        \"\"\"Power on the specified instance.\"\"\""},{"line_number":4084,"context_line":"        if share_info is None:"},{"line_number":4085,"context_line":"            share_info \u003d osm.ShareMappingList()"},{"line_number":4086,"context_line":"        # We use _hard_reboot here to ensure that all backing files,"},{"line_number":4087,"context_line":"        # network, and block device connections, etc. are established"},{"line_number":4088,"context_line":"        # and available before we attempt to start the instance."}],"source_content_type":"text/x-python","patch_set":28,"id":"f9432d27_b9e27936","line":4085,"range":{"start_line":4084,"start_character":0,"end_line":4085,"end_character":47},"updated":"2023-03-10 16:53:27.000000000","message":"you don\u0027t need this, _hard_reboot already handles getting None gracefully. \n\nIn general you can move the defaulting of this field in the call stack to the places where the data is used. I think there are share_info.attach_all() .detach_all() calls in couple of methods, those needs this defaulting. Also this data is used in _guest_add_virtiofs_for_share() but that already handles None gracefully. So the rest of the calls that are just forwarding the share_info to the deeper level does not need to care about if it is None.","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"34e669f3ac84d65720ca12c38644ba433dced8a7","unresolved":false,"context_lines":[{"line_number":4081,"context_line":"    def power_on(self, context, instance, network_info,"},{"line_number":4082,"context_line":"                 block_device_info\u003dNone, accel_info\u003dNone, share_info\u003dNone):"},{"line_number":4083,"context_line":"        \"\"\"Power on the specified instance.\"\"\""},{"line_number":4084,"context_line":"        if share_info is None:"},{"line_number":4085,"context_line":"            share_info \u003d osm.ShareMappingList()"},{"line_number":4086,"context_line":"        # We use _hard_reboot here to ensure that all backing files,"},{"line_number":4087,"context_line":"        # network, and block device connections, etc. are established"},{"line_number":4088,"context_line":"        # and available before we attempt to start the instance."}],"source_content_type":"text/x-python","patch_set":28,"id":"1de284e8_1f57e63f","line":4085,"range":{"start_line":4084,"start_character":0,"end_line":4085,"end_character":47},"in_reply_to":"f9432d27_b9e27936","updated":"2023-04-11 17:47:39.000000000","message":"Done","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6cd6dfdabb46f8c46ca06b9e5cff3f20b8936295","unresolved":true,"context_lines":[{"line_number":4091,"context_line":""},{"line_number":4092,"context_line":"    def _get_share_driver_manager(self, host, protocol):"},{"line_number":4093,"context_line":"        if protocol \u003d\u003d fields.ShareMappingProto.NFS:"},{"line_number":4094,"context_line":"            # nova.virt.libvirt.volume.nfs.LibvirtNFSVolumeDriver"},{"line_number":4095,"context_line":"            return nfs.LibvirtNFSVolumeDriver(host)"},{"line_number":4096,"context_line":"        elif protocol \u003d\u003d fields.ShareMappingProto.CEPHFS:"},{"line_number":4097,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":28,"id":"457926c3_e7bb1640","line":4094,"updated":"2023-03-13 15:22:45.000000000","message":"nit: to be removed or to be better commented ;)","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"34e669f3ac84d65720ca12c38644ba433dced8a7","unresolved":false,"context_lines":[{"line_number":4091,"context_line":""},{"line_number":4092,"context_line":"    def _get_share_driver_manager(self, host, protocol):"},{"line_number":4093,"context_line":"        if protocol \u003d\u003d fields.ShareMappingProto.NFS:"},{"line_number":4094,"context_line":"            # nova.virt.libvirt.volume.nfs.LibvirtNFSVolumeDriver"},{"line_number":4095,"context_line":"            return nfs.LibvirtNFSVolumeDriver(host)"},{"line_number":4096,"context_line":"        elif protocol \u003d\u003d fields.ShareMappingProto.CEPHFS:"},{"line_number":4097,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":28,"id":"f9fcb39c_aec02fcd","line":4094,"in_reply_to":"457926c3_e7bb1640","updated":"2023-04-11 17:47:39.000000000","message":"Done","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6cd6dfdabb46f8c46ca06b9e5cff3f20b8936295","unresolved":true,"context_lines":[{"line_number":4103,"context_line":"                                    \u0027name\u0027: share_mapping.share_id}}"},{"line_number":4104,"context_line":"        return connection_info"},{"line_number":4105,"context_line":""},{"line_number":4106,"context_line":"    def _get_share_mount_path(self, instance, host, share_mapping):"},{"line_number":4107,"context_line":"        drv \u003d self._get_share_driver_manager("},{"line_number":4108,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4109,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"7d5f06a4_e10b3ac9","line":4106,"range":{"start_line":4106,"start_character":46,"end_line":4106,"end_character":50},"updated":"2023-03-13 15:22:45.000000000","message":"nit: this parameter is unused.","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"34e669f3ac84d65720ca12c38644ba433dced8a7","unresolved":false,"context_lines":[{"line_number":4103,"context_line":"                                    \u0027name\u0027: share_mapping.share_id}}"},{"line_number":4104,"context_line":"        return connection_info"},{"line_number":4105,"context_line":""},{"line_number":4106,"context_line":"    def _get_share_mount_path(self, instance, host, share_mapping):"},{"line_number":4107,"context_line":"        drv \u003d self._get_share_driver_manager("},{"line_number":4108,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4109,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"6a3920b4_9a9852da","line":4106,"range":{"start_line":4106,"start_character":46,"end_line":4106,"end_character":50},"in_reply_to":"7d5f06a4_e10b3ac9","updated":"2023-04-11 17:47:39.000000000","message":"Done","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6cd6dfdabb46f8c46ca06b9e5cff3f20b8936295","unresolved":true,"context_lines":[{"line_number":4111,"context_line":"                self._get_share_connection_info(share_mapping))"},{"line_number":4112,"context_line":"        return mount_path"},{"line_number":4113,"context_line":""},{"line_number":4114,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":4115,"context_line":"        drv \u003d self._get_share_driver_manager("},{"line_number":4116,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4117,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"e9b8840b_9c4edf41","line":4114,"range":{"start_line":4114,"start_character":35,"end_line":4114,"end_character":43},"updated":"2023-03-13 15:22:45.000000000","message":"technically, this RPC parameter is not necessary, since we already know it from the share mapping itself.","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":4111,"context_line":"                self._get_share_connection_info(share_mapping))"},{"line_number":4112,"context_line":"        return mount_path"},{"line_number":4113,"context_line":""},{"line_number":4114,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":4115,"context_line":"        drv \u003d self._get_share_driver_manager("},{"line_number":4116,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4117,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"6b5b6588_7c6f0c1f","line":4114,"range":{"start_line":4114,"start_character":35,"end_line":4114,"end_character":43},"in_reply_to":"5ad8cc12_cb09ce83","updated":"2024-07-03 15:44:55.000000000","message":"Done","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"34e669f3ac84d65720ca12c38644ba433dced8a7","unresolved":true,"context_lines":[{"line_number":4111,"context_line":"                self._get_share_connection_info(share_mapping))"},{"line_number":4112,"context_line":"        return mount_path"},{"line_number":4113,"context_line":""},{"line_number":4114,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":4115,"context_line":"        drv \u003d self._get_share_driver_manager("},{"line_number":4116,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4117,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"5ad8cc12_cb09ce83","line":4114,"range":{"start_line":4114,"start_character":35,"end_line":4114,"end_character":43},"in_reply_to":"e9b8840b_9c4edf41","updated":"2023-04-11 17:47:39.000000000","message":"If I\u0027m not wrong, passing the instance avoids a query to get the instance object. (share_mapping contains only the instance_uuid)\nTo my mind, it is also more homogenous with the other methods that usually require context and instance...","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6cd6dfdabb46f8c46ca06b9e5cff3f20b8936295","unresolved":true,"context_lines":[{"line_number":4116,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4117,"context_line":""},{"line_number":4118,"context_line":"        try:"},{"line_number":4119,"context_line":"            drv.connect_volume("},{"line_number":4120,"context_line":"                self._get_share_connection_info(share_mapping),"},{"line_number":4121,"context_line":"                instance"},{"line_number":4122,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":28,"id":"7fb0f2b5_ad4c9425","line":4119,"updated":"2023-03-13 15:22:45.000000000","message":"note : if we reboot the compute, the connected volumes will no longer exist. Maybe we should call this mount_share() method in init_instance() as well when we restart the compute service to make those shares attached before the instance is respawned.","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"34e669f3ac84d65720ca12c38644ba433dced8a7","unresolved":true,"context_lines":[{"line_number":4116,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4117,"context_line":""},{"line_number":4118,"context_line":"        try:"},{"line_number":4119,"context_line":"            drv.connect_volume("},{"line_number":4120,"context_line":"                self._get_share_connection_info(share_mapping),"},{"line_number":4121,"context_line":"                instance"},{"line_number":4122,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":28,"id":"9cf4b6a1_265d6bc2","line":4119,"in_reply_to":"7fb0f2b5_ad4c9425","updated":"2023-04-11 17:47:39.000000000","message":"If you don\u0027t mind, I will fix this issue in another patches.","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":4116,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4117,"context_line":""},{"line_number":4118,"context_line":"        try:"},{"line_number":4119,"context_line":"            drv.connect_volume("},{"line_number":4120,"context_line":"                self._get_share_connection_info(share_mapping),"},{"line_number":4121,"context_line":"                instance"},{"line_number":4122,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":28,"id":"fc8d3a57_4b37ee33","line":4119,"in_reply_to":"9cf4b6a1_265d6bc2","updated":"2024-07-03 15:44:55.000000000","message":"Done","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6cd6dfdabb46f8c46ca06b9e5cff3f20b8936295","unresolved":true,"context_lines":[{"line_number":4129,"context_line":"                reason\u003dexc"},{"line_number":4130,"context_line":"            )"},{"line_number":4131,"context_line":""},{"line_number":4132,"context_line":"    def umount_share(self, context, instance, share_mapping):"},{"line_number":4133,"context_line":"        drv \u003d self._get_share_driver_manager("},{"line_number":4134,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4135,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"97d05ea2_fe6d46fd","line":4132,"range":{"start_line":4132,"start_character":36,"end_line":4132,"end_character":44},"updated":"2023-03-13 15:22:45.000000000","message":"ditto here, IMO, you can safely remove this parameter and just get it from the share mapping itself.","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"34e669f3ac84d65720ca12c38644ba433dced8a7","unresolved":true,"context_lines":[{"line_number":4129,"context_line":"                reason\u003dexc"},{"line_number":4130,"context_line":"            )"},{"line_number":4131,"context_line":""},{"line_number":4132,"context_line":"    def umount_share(self, context, instance, share_mapping):"},{"line_number":4133,"context_line":"        drv \u003d self._get_share_driver_manager("},{"line_number":4134,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4135,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"dff016eb_ad97b169","line":4132,"range":{"start_line":4132,"start_character":36,"end_line":4132,"end_character":44},"in_reply_to":"97d05ea2_fe6d46fd","updated":"2023-04-11 17:47:39.000000000","message":"see above.","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f8f82329856db8a814aba0c4d9350ecd2def9b47","unresolved":false,"context_lines":[{"line_number":4129,"context_line":"                reason\u003dexc"},{"line_number":4130,"context_line":"            )"},{"line_number":4131,"context_line":""},{"line_number":4132,"context_line":"    def umount_share(self, context, instance, share_mapping):"},{"line_number":4133,"context_line":"        drv \u003d self._get_share_driver_manager("},{"line_number":4134,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4135,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"87a4a65e_01b7429c","line":4132,"range":{"start_line":4132,"start_character":36,"end_line":4132,"end_character":44},"in_reply_to":"dff016eb_ad97b169","updated":"2024-08-26 14:51:09.000000000","message":"Done","commit_id":"50e6ce4174c39b2967d1febe7532ffe587d20a11"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4128183b24798390366366d6652a359ddd699197","unresolved":true,"context_lines":[{"line_number":3981,"context_line":"            ]"},{"line_number":3982,"context_line":"            vifs_already_plugged \u003d False"},{"line_number":3983,"context_line":""},{"line_number":3984,"context_line":"        share_info.attach_all()"},{"line_number":3985,"context_line":""},{"line_number":3986,"context_line":"        # NOTE(efried): The instance should already have a vtpm_secret_uuid"},{"line_number":3987,"context_line":"        # registered if appropriate."}],"source_content_type":"text/x-python","patch_set":38,"id":"cb8555da_d5e6b912","line":3984,"updated":"2023-11-15 16:43:51.000000000","message":"When this OVO state change is saved? I followed the reboot codepath from nova.compute.manager.ComputeManager.reboot_instance where the share_info is created to here in _hard_reboot() but I don\u0027t see .save() call on the changed OVO.\n\nThis either means that \n* a) this OVO state change is noop as attach was called before and the result was saved (I haven\u0027t checked) or \n* b) the state of the attachment does not really matter or \n* c) we have missing test coverage to show that the attachment state matters and we have a bug as the state isn\u0027t updated.","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9f26bffd50e81c66c907365852c62ba2768e4719","unresolved":true,"context_lines":[{"line_number":3981,"context_line":"            ]"},{"line_number":3982,"context_line":"            vifs_already_plugged \u003d False"},{"line_number":3983,"context_line":""},{"line_number":3984,"context_line":"        share_info.attach_all()"},{"line_number":3985,"context_line":""},{"line_number":3986,"context_line":"        # NOTE(efried): The instance should already have a vtpm_secret_uuid"},{"line_number":3987,"context_line":"        # registered if appropriate."}],"source_content_type":"text/x-python","patch_set":38,"id":"d4e86440_d626e52c","line":3984,"in_reply_to":"cb8555da_d5e6b912","updated":"2024-01-22 17:09:44.000000000","message":"attach_all() iterate on all shares --\u003e share.attach() --\u003e self.save()\n\nAll the persistance is done in the nova/objects/share_mapping.py\n\nAm i missing something ?","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"50ecf68bb5f80ee95e7e01cbe03eda785f0d3e25","unresolved":false,"context_lines":[{"line_number":3981,"context_line":"            ]"},{"line_number":3982,"context_line":"            vifs_already_plugged \u003d False"},{"line_number":3983,"context_line":""},{"line_number":3984,"context_line":"        share_info.attach_all()"},{"line_number":3985,"context_line":""},{"line_number":3986,"context_line":"        # NOTE(efried): The instance should already have a vtpm_secret_uuid"},{"line_number":3987,"context_line":"        # registered if appropriate."}],"source_content_type":"text/x-python","patch_set":38,"id":"48b2675f_d80ebfa3","line":3984,"in_reply_to":"d4e86440_d626e52c","updated":"2024-01-29 18:18:36.000000000","message":"No, I missed the save call in nova.objects.share_mapping.ShareMapping.attach","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4128183b24798390366366d6652a359ddd699197","unresolved":true,"context_lines":[{"line_number":4100,"context_line":"            self._clean_shutdown(instance, timeout, retry_interval)"},{"line_number":4101,"context_line":"        self._destroy(instance)"},{"line_number":4102,"context_line":""},{"line_number":4103,"context_line":"        share_info.detach_all()"},{"line_number":4104,"context_line":""},{"line_number":4105,"context_line":"    def power_on(self, context, instance, network_info,"},{"line_number":4106,"context_line":"                 block_device_info\u003dNone, accel_info\u003dNone, share_info\u003dNone):"}],"source_content_type":"text/x-python","patch_set":38,"id":"79624b23_a5100009","line":4103,"updated":"2023-11-15 16:43:51.000000000","message":"Ditto. I don\u0027t see when this OVO state change is persisted to the DB. I traced this from nova.compute.manager.ComputeManager.stop_instance to here and I don\u0027t see a .save() call.","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"9f26bffd50e81c66c907365852c62ba2768e4719","unresolved":true,"context_lines":[{"line_number":4100,"context_line":"            self._clean_shutdown(instance, timeout, retry_interval)"},{"line_number":4101,"context_line":"        self._destroy(instance)"},{"line_number":4102,"context_line":""},{"line_number":4103,"context_line":"        share_info.detach_all()"},{"line_number":4104,"context_line":""},{"line_number":4105,"context_line":"    def power_on(self, context, instance, network_info,"},{"line_number":4106,"context_line":"                 block_device_info\u003dNone, accel_info\u003dNone, share_info\u003dNone):"}],"source_content_type":"text/x-python","patch_set":38,"id":"c9d64cb2_e70b57dd","line":4103,"in_reply_to":"79624b23_a5100009","updated":"2024-01-22 17:09:44.000000000","message":"Similar as attach_all()","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"50ecf68bb5f80ee95e7e01cbe03eda785f0d3e25","unresolved":false,"context_lines":[{"line_number":4100,"context_line":"            self._clean_shutdown(instance, timeout, retry_interval)"},{"line_number":4101,"context_line":"        self._destroy(instance)"},{"line_number":4102,"context_line":""},{"line_number":4103,"context_line":"        share_info.detach_all()"},{"line_number":4104,"context_line":""},{"line_number":4105,"context_line":"    def power_on(self, context, instance, network_info,"},{"line_number":4106,"context_line":"                 block_device_info\u003dNone, accel_info\u003dNone, share_info\u003dNone):"}],"source_content_type":"text/x-python","patch_set":38,"id":"436901b9_def96d67","line":4103,"in_reply_to":"c9d64cb2_e70b57dd","updated":"2024-01-29 18:18:36.000000000","message":"Acknowledged","commit_id":"33b7c5cb61c454adb06dac5cf372784ecdceaf19"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f9a9ee6245aa579e214200c360489c9c7e405061","unresolved":true,"context_lines":[{"line_number":4159,"context_line":"                self._get_share_connection_info(share_mapping))"},{"line_number":4160,"context_line":"        return mount_path"},{"line_number":4161,"context_line":""},{"line_number":4162,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":4163,"context_line":"        drv \u003d self._get_share_driver_manager("},{"line_number":4164,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4165,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"c884a7cf_b2f2064d","line":4162,"updated":"2024-02-25 22:49:43.000000000","message":"these should be made internal methods so add an _","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":4159,"context_line":"                self._get_share_connection_info(share_mapping))"},{"line_number":4160,"context_line":"        return mount_path"},{"line_number":4161,"context_line":""},{"line_number":4162,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":4163,"context_line":"        drv \u003d self._get_share_driver_manager("},{"line_number":4164,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4165,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"92f33b58_bb001bdb","line":4162,"in_reply_to":"306c8da6_459e581f","updated":"2024-07-03 15:44:55.000000000","message":"Done","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":true,"context_lines":[{"line_number":4159,"context_line":"                self._get_share_connection_info(share_mapping))"},{"line_number":4160,"context_line":"        return mount_path"},{"line_number":4161,"context_line":""},{"line_number":4162,"context_line":"    def mount_share(self, context, instance, share_mapping):"},{"line_number":4163,"context_line":"        drv \u003d self._get_share_driver_manager("},{"line_number":4164,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4165,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"306c8da6_459e581f","line":4162,"in_reply_to":"c884a7cf_b2f2064d","updated":"2024-02-28 13:13:31.000000000","message":"they are called from the compute mgr","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f9a9ee6245aa579e214200c360489c9c7e405061","unresolved":true,"context_lines":[{"line_number":4177,"context_line":"                reason\u003dexc"},{"line_number":4178,"context_line":"            )"},{"line_number":4179,"context_line":""},{"line_number":4180,"context_line":"    def umount_share(self, context, instance, share_mapping):"},{"line_number":4181,"context_line":"        drv \u003d self._get_share_driver_manager("},{"line_number":4182,"context_line":"            instance.host, share_mapping.share_proto)"},{"line_number":4183,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"43f60048_fa6e5981","line":4180,"updated":"2024-02-25 22:49:43.000000000","message":"same _unmount\n\nas this code will contiue to mount/unmount the code on the host we do not need to rename these to attach as the attchment is done only at the compute manager level.","commit_id":"cf169ea35e785576f213ba3fce802113957c62a7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1b43927dee55bba46b49b665c8e4292408e4c0ea","unresolved":true,"context_lines":[{"line_number":3955,"context_line":"        re-creates the domain to ensure the reboot happens, as the guest"},{"line_number":3956,"context_line":"        OS cannot ignore this action."},{"line_number":3957,"context_line":"        \"\"\""},{"line_number":3958,"context_line":"        if share_info is None:"},{"line_number":3959,"context_line":"            share_info \u003d objects.ShareMappingList()"},{"line_number":3960,"context_line":"        # NOTE(sbauza): Since we undefine the guest XML when destroying, we"},{"line_number":3961,"context_line":"        # need to remember the existing mdevs for reusing them."},{"line_number":3962,"context_line":"        mdevs \u003d self._get_all_assigned_mediated_devices(instance)"}],"source_content_type":"text/x-python","patch_set":43,"id":"87f76e3b_4192ac9b","line":3959,"range":{"start_line":3958,"start_character":0,"end_line":3959,"end_character":51},"updated":"2024-02-28 13:13:31.000000000","message":"Callers are passing share_info except resume_state_on_host_boot. This means if resume state on host boot is enabled, the instance will loose the shares during host reboot. This needs to be fixed. \n\nI think we need to make this parameter mandatory through the call chain to avoid loosing shares during hard reboot","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"b68785d13a37ede9d1d986a5d84716ff9262b8fe","unresolved":false,"context_lines":[{"line_number":3955,"context_line":"        re-creates the domain to ensure the reboot happens, as the guest"},{"line_number":3956,"context_line":"        OS cannot ignore this action."},{"line_number":3957,"context_line":"        \"\"\""},{"line_number":3958,"context_line":"        if share_info is None:"},{"line_number":3959,"context_line":"            share_info \u003d objects.ShareMappingList()"},{"line_number":3960,"context_line":"        # NOTE(sbauza): Since we undefine the guest XML when destroying, we"},{"line_number":3961,"context_line":"        # need to remember the existing mdevs for reusing them."},{"line_number":3962,"context_line":"        mdevs \u003d self._get_all_assigned_mediated_devices(instance)"}],"source_content_type":"text/x-python","patch_set":43,"id":"880f21a8_9e57f511","line":3959,"range":{"start_line":3958,"start_character":0,"end_line":3959,"end_character":51},"in_reply_to":"87f76e3b_4192ac9b","updated":"2024-03-11 15:44:12.000000000","message":"Done","commit_id":"4758e058ddc50fcb7bc508210c63ddf4fa2f46da"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":true,"context_lines":[{"line_number":885,"context_line":"            \u0027supports_secure_boot\u0027: self._host.supports_secure_boot,"},{"line_number":886,"context_line":"            \u0027supports_remote_managed_ports\u0027:"},{"line_number":887,"context_line":"            self._host.supports_remote_managed_ports,"},{"line_number":888,"context_line":"            \u0027supports_virtio_fs\u0027: self._host.supports_virtio_fs,"},{"line_number":889,"context_line":"            \u0027supports_mem_backing_file\u0027: self._host.supports_mem_backing_file"},{"line_number":890,"context_line":"        })"},{"line_number":891,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"ce86aa3e_566895a0","line":888,"updated":"2024-07-03 15:44:55.000000000","message":"I don\u0027t see where you negatively test this capability.\n\n(LATER) well, looking at this capability, I think this is not really needed, you could just remove it.","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"93d363b0c2736dcf683afbc1f9aeb7600efe6b51","unresolved":false,"context_lines":[{"line_number":885,"context_line":"            \u0027supports_secure_boot\u0027: self._host.supports_secure_boot,"},{"line_number":886,"context_line":"            \u0027supports_remote_managed_ports\u0027:"},{"line_number":887,"context_line":"            self._host.supports_remote_managed_ports,"},{"line_number":888,"context_line":"            \u0027supports_virtio_fs\u0027: self._host.supports_virtio_fs,"},{"line_number":889,"context_line":"            \u0027supports_mem_backing_file\u0027: self._host.supports_mem_backing_file"},{"line_number":890,"context_line":"        })"},{"line_number":891,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"06025438_9954c6dd","line":888,"in_reply_to":"305f9a6a_b24c6cc8","updated":"2024-11-13 14:34:55.000000000","message":"Done","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"90415a456ead7a9dede22c817cfa7a392d967196","unresolved":true,"context_lines":[{"line_number":885,"context_line":"            \u0027supports_secure_boot\u0027: self._host.supports_secure_boot,"},{"line_number":886,"context_line":"            \u0027supports_remote_managed_ports\u0027:"},{"line_number":887,"context_line":"            self._host.supports_remote_managed_ports,"},{"line_number":888,"context_line":"            \u0027supports_virtio_fs\u0027: self._host.supports_virtio_fs,"},{"line_number":889,"context_line":"            \u0027supports_mem_backing_file\u0027: self._host.supports_mem_backing_file"},{"line_number":890,"context_line":"        })"},{"line_number":891,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"305f9a6a_b24c6cc8","line":888,"in_reply_to":"ce86aa3e_566895a0","updated":"2024-07-16 12:44:46.000000000","message":"The capability is used in later patches to ensure all nodes support virtiofs. So we can enable this feature.","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":false,"context_lines":[{"line_number":4078,"context_line":"        #             regenerate raw backend images, however, so when it"},{"line_number":4079,"context_line":"        #             does we need to (re)generate the xml after the images"},{"line_number":4080,"context_line":"        #             are in place."},{"line_number":4081,"context_line":""},{"line_number":4082,"context_line":"        xml \u003d self._get_guest_xml(context, instance, network_info, disk_info,"},{"line_number":4083,"context_line":"                                  instance.image_meta,"},{"line_number":4084,"context_line":"                                  block_device_info\u003dblock_device_info,"}],"source_content_type":"text/x-python","patch_set":51,"id":"3ea0b0ed_6a934813","line":4081,"updated":"2024-07-03 15:44:55.000000000","message":"unnecessary but ok","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[{"line_number":1651,"context_line":"        msg \u003d _(\u0027Invalid machine type: %s\u0027)"},{"line_number":1652,"context_line":"        raise exception.InternalError(msg % machine)"},{"line_number":1653,"context_line":""},{"line_number":1654,"context_line":"    def _check_file_backed_memory_support(self):"},{"line_number":1655,"context_line":"        if not CONF.libvirt.file_backed_memory:"},{"line_number":1656,"context_line":"            return False"},{"line_number":1657,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ffd6fb7b_0e0f02b4","line":1654,"updated":"2022-08-26 10:26:41.000000000","message":"note to reviewers: this is moved from the driver.py here","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":true,"context_lines":[{"line_number":1651,"context_line":"        msg \u003d _(\u0027Invalid machine type: %s\u0027)"},{"line_number":1652,"context_line":"        raise exception.InternalError(msg % machine)"},{"line_number":1653,"context_line":""},{"line_number":1654,"context_line":"    def _check_file_backed_memory_support(self):"},{"line_number":1655,"context_line":"        if not CONF.libvirt.file_backed_memory:"},{"line_number":1656,"context_line":"            return False"},{"line_number":1657,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"0d2cfd41_05a6e249","line":1654,"in_reply_to":"ffd6fb7b_0e0f02b4","updated":"2024-07-03 15:44:55.000000000","message":"ack your comment helps.","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb3ff47ff2c8a63d103622658be036fddf76896d","unresolved":true,"context_lines":[{"line_number":1865,"context_line":"    def supports_virtio_fs(self) -\u003e bool:"},{"line_number":1866,"context_line":"        return self.has_min_version("},{"line_number":1867,"context_line":"            lv_ver\u003ddriver.MIN_LIBVIRT_VERSION,"},{"line_number":1868,"context_line":"            hv_ver\u003ddriver.MIN_QEMU_VERSION)"},{"line_number":1869,"context_line":""},{"line_number":1870,"context_line":"    @property"},{"line_number":1871,"context_line":"    def supports_mem_backing_file(self) -\u003e bool:"}],"source_content_type":"text/x-python","patch_set":51,"id":"a8c16d2b_e442b400","line":1868,"updated":"2024-07-03 15:44:55.000000000","message":"is that check really necessary ? either way, the upstream support envelope for nova-compute is already those versions, so we\u0027re sure that all computes from this release already support virtiofs.\n\n(Honestly, I\u0027d be in favor of running this property rather than trying to find a negative test)","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"93d363b0c2736dcf683afbc1f9aeb7600efe6b51","unresolved":false,"context_lines":[{"line_number":1865,"context_line":"    def supports_virtio_fs(self) -\u003e bool:"},{"line_number":1866,"context_line":"        return self.has_min_version("},{"line_number":1867,"context_line":"            lv_ver\u003ddriver.MIN_LIBVIRT_VERSION,"},{"line_number":1868,"context_line":"            hv_ver\u003ddriver.MIN_QEMU_VERSION)"},{"line_number":1869,"context_line":""},{"line_number":1870,"context_line":"    @property"},{"line_number":1871,"context_line":"    def supports_mem_backing_file(self) -\u003e bool:"}],"source_content_type":"text/x-python","patch_set":51,"id":"9e24ada5_075ed10b","line":1868,"in_reply_to":"3e20d799_3f05d42f","updated":"2024-11-13 14:34:55.000000000","message":"Done","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"90415a456ead7a9dede22c817cfa7a392d967196","unresolved":true,"context_lines":[{"line_number":1865,"context_line":"    def supports_virtio_fs(self) -\u003e bool:"},{"line_number":1866,"context_line":"        return self.has_min_version("},{"line_number":1867,"context_line":"            lv_ver\u003ddriver.MIN_LIBVIRT_VERSION,"},{"line_number":1868,"context_line":"            hv_ver\u003ddriver.MIN_QEMU_VERSION)"},{"line_number":1869,"context_line":""},{"line_number":1870,"context_line":"    @property"},{"line_number":1871,"context_line":"    def supports_mem_backing_file(self) -\u003e bool:"}],"source_content_type":"text/x-python","patch_set":51,"id":"3e20d799_3f05d42f","line":1868,"in_reply_to":"a8c16d2b_e442b400","updated":"2024-07-16 12:44:46.000000000","message":"I have not removed that check because I think defining a Qemu/libvirt version that will support migration with shares might be required later.","commit_id":"cd79d8b29a524fe575112d98f5af7264f9679444"}],"nova/virt/powervm/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b441a37afaeaa12e20417fc0b01b613ca974b9d9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"6cda684d_dbaa3d2d","updated":"2022-08-26 10:26:41.000000000","message":"This was deleted on master. Drop this please from the patch","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"e376c44ccc5905df356382f263e6aa508afbead4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"c5e41a67_dcf25260","in_reply_to":"6cda684d_dbaa3d2d","updated":"2022-08-31 14:51:42.000000000","message":"Done","commit_id":"c4a463e45b83228ca5c40518dab11a4a9a0cfaeb"}]}
