)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":18,"context_line":"virtiofs."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Implements: blueprint libvirt-virtiofs-attach-manila-shares"},{"line_number":21,"context_line":"Closes-Bug: #1887471"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I44ab37ec2c15fcfc351c42216660bda39461b163"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"286de893_7d22dc42","line":21,"updated":"2022-08-17 11:01:45.000000000","message":"That is not a nova bug report","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":18,"context_line":"virtiofs."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Implements: blueprint libvirt-virtiofs-attach-manila-shares"},{"line_number":21,"context_line":"Closes-Bug: #1887471"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I44ab37ec2c15fcfc351c42216660bda39461b163"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"797ac16d_40bd8b28","line":21,"in_reply_to":"286de893_7d22dc42","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f306d3a1e5d7a62ede47bec95dbdee0cf0accbca","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is inspired by /nova/volume/cinder.py, it is an abstraction to"},{"line_number":10,"context_line":"the manila service."},{"line_number":11,"context_line":"Note: This path is currently using the python-manila client because some"},{"line_number":12,"context_line":"methods (allow/deny shares) are not available in the openstacksdk."},{"line_number":13,"context_line":"It is planned to move to the sdk as soons as it will be ready."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Manila is the OpenStack Shared Filesystems service."},{"line_number":16,"context_line":"These series of patches implement changes required in Nova to allow the shares"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":42,"id":"8a86e61f_f669318d","line":13,"range":{"start_line":11,"start_character":0,"end_line":13,"end_character":62},"updated":"2024-02-14 11:19:23.000000000","message":"that\u0027s no longer true, right?","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"778cf19a51fdb8bac211971494b02b1384db740f","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is inspired by /nova/volume/cinder.py, it is an abstraction to"},{"line_number":10,"context_line":"the manila service."},{"line_number":11,"context_line":"Note: This path is currently using the python-manila client because some"},{"line_number":12,"context_line":"methods (allow/deny shares) are not available in the openstacksdk."},{"line_number":13,"context_line":"It is planned to move to the sdk as soons as it will be ready."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Manila is the OpenStack Shared Filesystems service."},{"line_number":16,"context_line":"These series of patches implement changes required in Nova to allow the shares"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":42,"id":"e612b2f9_f21a2ffc","line":13,"range":{"start_line":11,"start_character":0,"end_line":13,"end_character":62},"in_reply_to":"8a86e61f_f669318d","updated":"2024-02-16 14:09:46.000000000","message":"You are right, I gonna remove it.","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is inspired by /nova/volume/cinder.py, it is an abstraction to"},{"line_number":10,"context_line":"the manila service."},{"line_number":11,"context_line":"Note: This path is currently using the python-manila client because some"},{"line_number":12,"context_line":"methods (allow/deny shares) are not available in the openstacksdk."},{"line_number":13,"context_line":"It is planned to move to the sdk as soons as it will be ready."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Manila is the OpenStack Shared Filesystems service."},{"line_number":16,"context_line":"These series of patches implement changes required in Nova to allow the shares"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":42,"id":"6b2ee89c_dce4e3b1","line":13,"range":{"start_line":11,"start_character":0,"end_line":13,"end_character":62},"in_reply_to":"e612b2f9_f21a2ffc","updated":"2024-02-29 12:04:37.000000000","message":"Done","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":true,"context_lines":[{"line_number":15,"context_line":"virtiofs."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Implements: blueprint libvirt-virtiofs-attach-manila-shares"},{"line_number":18,"context_line":"Depends-On: https://review.opendev.org/c/openstack/openstacksdk/+/889519"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I44ab37ec2c15fcfc351c42216660bda39461b163"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":43,"id":"144aaeee_fbb82405","line":18,"updated":"2024-02-29 12:04:37.000000000","message":"You\u0027ll need to bump the lower-constraint for `openstacksdk` later","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"477dd6a1e979028ea7e82e50ba7e980f768a13cb","unresolved":false,"context_lines":[{"line_number":15,"context_line":"virtiofs."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Implements: blueprint libvirt-virtiofs-attach-manila-shares"},{"line_number":18,"context_line":"Depends-On: https://review.opendev.org/c/openstack/openstacksdk/+/889519"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I44ab37ec2c15fcfc351c42216660bda39461b163"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":43,"id":"c1c024fc_005fe266","line":18,"in_reply_to":"144aaeee_fbb82405","updated":"2024-05-15 16:27:53.000000000","message":"Acknowledged","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"31e18a65_5399fe09","updated":"2022-08-17 11:01:45.000000000","message":"I haven\u0027t finished reviewing the whole patch before I run out of time. I will continue later.","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"38bf4a7f91ba671a5a9bfe52f57e47d7e21d7323","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"804857b2_7fea3102","updated":"2023-01-24 18:02:53.000000000","message":"My comments were answered / fixed. But John has some questions / comment inline so I added -1 for visibility on those.","commit_id":"92ab666bf228970bb347d19f871c79128bbbb893"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf189205b15346a1c21f0f3f56d21419e32e8ecf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"d96fdc13_71560cdb","updated":"2023-05-23 17:29:15.000000000","message":"just a few concerns, nothing large.","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5f7f9e11391df633d8416c07c140c49d1c764564","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"ba10de4d_89bd844d","updated":"2024-01-12 16:22:25.000000000","message":"Whoops, forgot to notice some bad pattern with the fixture.\n\nTBC, the fixture should mock the *manilaclient* calls, and shouldn\u0027t wrap the nova/share/manila methods.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"178e6b1f_b4a5f17b","updated":"2024-01-12 15:55:55.000000000","message":"it took me a while before being able to correctly review that patch, and I\u0027m really sorry about it.\nSee my comments below, but I\u0027m free to discuss about every of them.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4725e200815ea403db73faea84d87cc990158801","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"1092023c_296fd3fd","updated":"2024-01-30 15:24:35.000000000","message":"Seems good to me but we need to wait for the SDK change to be merged and released.","commit_id":"bbb3115d43136d417c678ad6bde4b815f7d6404b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f306d3a1e5d7a62ede47bec95dbdee0cf0accbca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"979a8cee_d6ba2b80","updated":"2024-02-14 11:19:23.000000000","message":"Sorry, but with my last review run, I found two new concerns.","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"2c77aac5_391d7c86","updated":"2024-02-29 12:04:37.000000000","message":"Provisional -1. There are a lot of comments but many are nits which can be addressed in follow-ups/ignored if necessary. The real issue (and reason for the -1) is my questions about your error handling. I would suggest testing this stuff with the SDK locally against a real deployment if that\u0027s possible?","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"077bb8c3c5f17092694bc44f00bc3d62521425f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":45,"id":"2a5f6885_34b1c465","updated":"2024-05-13 09:43:10.000000000","message":"there are unanswered review comments form PS43 so I stopped my review run here.","commit_id":"df7bc03557eb5339bb5b59eb3afcebbddf1355cf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ec09d8f484d84848803fd06308e488e0232b76fb","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":46,"id":"ffa626ca_68c4f961","updated":"2024-05-28 12:40:00.000000000","message":"Let\u0027s make sure we are passing the req-id to manila from nova so we can trace the request.","commit_id":"8631c0b95db485b52b0a48a7f0a57b5d84c2dae4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b13a670fd4bad4ada6550926435d2bbe5be715cb","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":46,"id":"2d805eb5_fedc38ea","in_reply_to":"2654cf31_094942af","updated":"2024-06-18 11:42:17.000000000","message":"thanks. I think it make sense to pass the req-id from nova even if we need the manila fix to make that req-id really useful for debugging. Thanks for fixing this and letting manila folks know about the issue.","commit_id":"8631c0b95db485b52b0a48a7f0a57b5d84c2dae4"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f9f67d6b8f06209390e3244cabe9c286be07cefe","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":46,"id":"62bea8e7_5ca3154f","in_reply_to":"2d805eb5_fedc38ea","updated":"2024-06-19 08:51:36.000000000","message":"Just providing some traces here:\n\nAssociating a share:\n\nGet the request id below in a log.\n\n```bash\nJun 19 08:38:43 openstack nova-compute[2315457]: DEBUG nova.share.manila [None req-247bfe96-4ff4-44a9-9497-c30257e8adf8 demo admin] Allow host access to share id:\u00279022ca1b-0cec-4c60-80f8-6d918d2107ae\u0027 {{(pid\u003d2315457) allow /opt/stack/nova/nova/share/manila.py:313}}\n```\n\nLooking at headers passed:\n\n```bash\nPOST /share/v2/shares/9022ca1b-0cec-4c60-80f8-6d918d2107ae/action HTTP/1.1\nHost: 192.168.122.197\nUser-Agent: nova-compute keystoneauth1/5.3.0 python-requests/2.28.2 CPython/3.10.12\nAccept-Encoding: gzip, deflate\nAccept: */*\nConnection: keep-alive\nOpenStack-API-Version: shared-file-system 2.82\nX-OpenStack-Manila-API-Version: 2.82\nX-Auth-Token: gAAAAABmcpkT4FUguP6TVBHRw2-f11L20GNAZWWQhXxAppVvhDYw92JRT5TSWYFsZpLeKdpENpWB4rnYoJdgFkUttMsSpEw-CFoUwsMP-93WdAuOW2KFMyXX06FJYkKvBhEDWXnLjFaVF3p2Xa8in-BZTQ-Da2n4FRISMY0ULbDm3gcqGPHa_Sw\nContent-Type: application/json\nX-Openstack-Request-Id: req-247bfe96-4ff4-44a9-9497-c30257e8adf8\nContent-Length: 164\n```\n\nX-Openstack-Request-Id is set properly.","commit_id":"8631c0b95db485b52b0a48a7f0a57b5d84c2dae4"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"20bad34b71a1f86c035637957bed2ac727e5d773","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":46,"id":"2654cf31_094942af","in_reply_to":"5e4fd428_b0741027","updated":"2024-06-18 08:14:09.000000000","message":"Ok so it was not working at the first attempt.\nI modified the code to pass the context to the methods and pass global_request_id attribute to the sdk connection. As specified here: https://docs.openstack.org/openstacksdk/latest/user/connection.html#connection-object\nAfter that, looking at the http requests to Manila, I can see the header.\n\nUnfortunately, as of today, there is a bug in Manila that prevents to use it.\nhttps://bugs.launchpad.net/manila/+bug/2069230","commit_id":"8631c0b95db485b52b0a48a7f0a57b5d84c2dae4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1fcd9a2248cd7f3972aaab9e435373eb071e7c9d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":46,"id":"0cb6d69c_d59841a8","in_reply_to":"62bea8e7_5ca3154f","updated":"2024-07-04 16:15:50.000000000","message":"looks good","commit_id":"8631c0b95db485b52b0a48a7f0a57b5d84c2dae4"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"46e9af927f16eff06806528a2250bb84114eb2c6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":46,"id":"5e4fd428_b0741027","in_reply_to":"ffa626ca_68c4f961","updated":"2024-06-05 12:48:31.000000000","message":"Verification in progress...","commit_id":"8631c0b95db485b52b0a48a7f0a57b5d84c2dae4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a0104dbe7570f562ef12b141e9df99c0d50efac7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":47,"id":"8dbec14d_cfe4cbc0","updated":"2024-06-04 09:30:58.000000000","message":"the microversion passing look OK to me. We still have the req-id question and couple of question from Stephen open.","commit_id":"2d8d1ffb55b88f142db4228d20582abb01b972d9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b2020a8b029da31bae6f64cb7d28d9673199554b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":49,"id":"ca548fd1_3666c469","updated":"2024-06-27 07:17:38.000000000","message":"let\u0027s give it a try, we can do something else by follow-ups.","commit_id":"f0168133f48e19e72b3e5af3e3b3d6967ccbc8f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b13a670fd4bad4ada6550926435d2bbe5be715cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":49,"id":"6137b8a2_06d0156b","updated":"2024-06-18 11:42:17.000000000","message":"looks good to me.","commit_id":"f0168133f48e19e72b3e5af3e3b3d6967ccbc8f2"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"783eadcd3d635b9a6779ae9bdca9fd54b71a4c30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":56,"id":"30ad11f1_2b737590","updated":"2024-11-13 14:10:14.000000000","message":"I was good with the previous revisions, I\u0027m still good with that one. +1 until I fully review the series.","commit_id":"d0d9e04ed94c5b3864fac510aa2faa1b5a8df787"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d7285cc66339de8236aa01f9a0b6200c51060339","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":56,"id":"c57a0dd7_3f02b477","updated":"2024-11-05 12:53:46.000000000","message":"No new change since the last review just rebases. So this look good to me.","commit_id":"d0d9e04ed94c5b3864fac510aa2faa1b5a8df787"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"44c194995bc29a93f04b25c69960c192e67a2571","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":57,"id":"2c5e057b_d6decdb9","updated":"2024-11-15 09:53:45.000000000","message":"No change since my last review just a rebase. Still looks good.","commit_id":"cc8bf9a475e1d5bd50b1acf5b06be82548106dec"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"34060fd10be3e48e374f9be205f212275dafe909","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":57,"id":"be984068_d37764ed","updated":"2024-11-14 10:41:40.000000000","message":"Upgrading to +2 my vote. No changes in this PS.","commit_id":"cc8bf9a475e1d5bd50b1acf5b06be82548106dec"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a45b6543b252a954c8510253107df3f846df2f2f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":57,"id":"1b031529_ce77e11a","updated":"2024-11-14 10:41:54.000000000","message":"recheck nova-next post failure","commit_id":"cc8bf9a475e1d5bd50b1acf5b06be82548106dec"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b36f7ec0f66776e3f9a96c9fbdc4e4bc1d4d562d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":58,"id":"1f644aa9_02ea578f","updated":"2024-11-20 14:57:27.000000000","message":"still good","commit_id":"e3aa88965f4fc9e6fce9df6408b7eabfd8c5e7c0"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"42eefa1e54be82e4b19c3c39e4dbad7e1b5583fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":59,"id":"074a894b_53ebb243","updated":"2024-11-21 19:27:41.000000000","message":"Late LGTM, thank you Rene!","commit_id":"71d9af819c25e616c26ce592692b9bf6f8ea7bcc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d3637f331ff168b9510b33f4631607cfdcd9cbdb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":60,"id":"6a56aea9_fc89746f","updated":"2024-11-22 16:01:49.000000000","message":"merge conflict resolution looks good.","commit_id":"0f9001f06ecd737adbf1af3adb134e110232ab1e"}],"nova/conf/manila.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2016 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":11,"id":"10dfd62a_05484d37","line":1,"updated":"2022-08-17 11:01:45.000000000","message":"copy-paste","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2016 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":11,"id":"dedeaa20_3642a71b","line":1,"in_reply_to":"10dfd62a_05484d37","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":50,"context_line":"* URL for manila endpoint API"},{"line_number":51,"context_line":"  e.g. http://localhost:8776/v3/%(project_id)s"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Note: Nova does not support the Manila v2 API since the Nova 17.0.0 Queens"},{"line_number":54,"context_line":"release."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Related options:"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"2c610cf4_a4b2c456","line":54,"range":{"start_line":53,"start_character":0,"end_line":54,"end_character":8},"updated":"2022-08-17 11:01:45.000000000","message":"this feels wrong on multiple levels, probably copy-paste","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* URL for manila endpoint API"},{"line_number":51,"context_line":"  e.g. http://localhost:8776/v3/%(project_id)s"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Note: Nova does not support the Manila v2 API since the Nova 17.0.0 Queens"},{"line_number":54,"context_line":"release."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Related options:"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"49f19f50_d5ca5827","line":54,"range":{"start_line":53,"start_character":0,"end_line":54,"end_character":8},"in_reply_to":"2c610cf4_a4b2c456","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"* Any integer value. 0 means connection is attempted only once"},{"line_number":81,"context_line":"\"\"\"),"},{"line_number":82,"context_line":"    cfg.BoolOpt(\u0027cross_az_attach\u0027,"},{"line_number":83,"context_line":"                default\u003dTrue,"},{"line_number":84,"context_line":"                help\u003d\"\"\""},{"line_number":85,"context_line":"Allow attach between instance and volume in different availability zones."}],"source_content_type":"text/x-python","patch_set":11,"id":"f978bcdd_5b3b79f2","line":82,"updated":"2022-08-17 11:01:45.000000000","message":"are the AZ concept in manial? If yes the we have to think about this logic. If no, the drop this. Right now it is copy-paste from cinder and talking about volumes","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"4f8363dda77df3698eb0bd41cda54431c81491e5","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"* Any integer value. 0 means connection is attempted only once"},{"line_number":81,"context_line":"\"\"\"),"},{"line_number":82,"context_line":"    cfg.BoolOpt(\u0027cross_az_attach\u0027,"},{"line_number":83,"context_line":"                default\u003dTrue,"},{"line_number":84,"context_line":"                help\u003d\"\"\""},{"line_number":85,"context_line":"Allow attach between instance and volume in different availability zones."}],"source_content_type":"text/x-python","patch_set":11,"id":"5f8aa1ce_27901592","line":82,"in_reply_to":"f978bcdd_5b3b79f2","updated":"2022-08-25 17:01:37.000000000","message":"Done","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"423c07bc857b39ef1d58f2e359b7943e6eeb575e","unresolved":true,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* Any integer value. 0 means connection is attempted only once"},{"line_number":75,"context_line":"\"\"\"),"},{"line_number":76,"context_line":"    cfg.BoolOpt(\u0027debug\u0027,"},{"line_number":77,"context_line":"        default\u003dFalse,"},{"line_number":78,"context_line":"        help\u003d\"\"\""},{"line_number":79,"context_line":"Enable DEBUG logging with manilaclient independently of the rest"}],"source_content_type":"text/x-python","patch_set":21,"id":"71d4c7c6_cb0b8c31","line":76,"updated":"2022-10-18 08:30:54.000000000","message":"I am not sure we want this in the final patch?","commit_id":"539400f4ac4e6f1beb106997016c0f4d55a4ebd4"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"81bb4b0b757cb316295510ed77eb37422a31b977","unresolved":true,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* Any integer value. 0 means connection is attempted only once"},{"line_number":75,"context_line":"\"\"\"),"},{"line_number":76,"context_line":"    cfg.BoolOpt(\u0027debug\u0027,"},{"line_number":77,"context_line":"        default\u003dFalse,"},{"line_number":78,"context_line":"        help\u003d\"\"\""},{"line_number":79,"context_line":"Enable DEBUG logging with manilaclient independently of the rest"}],"source_content_type":"text/x-python","patch_set":21,"id":"a63fb2d5_4d0a6868","line":76,"in_reply_to":"71d4c7c6_cb0b8c31","updated":"2023-01-25 15:21:49.000000000","message":"I have mimicked what was done on conf/cinder.py, but I think it can be helpful.","commit_id":"539400f4ac4e6f1beb106997016c0f4d55a4ebd4"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ea218c147927f0044643a83400eb206b6dc3add","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* Any integer value. 0 means connection is attempted only once"},{"line_number":75,"context_line":"\"\"\"),"},{"line_number":76,"context_line":"    cfg.BoolOpt(\u0027debug\u0027,"},{"line_number":77,"context_line":"        default\u003dFalse,"},{"line_number":78,"context_line":"        help\u003d\"\"\""},{"line_number":79,"context_line":"Enable DEBUG logging with manilaclient independently of the rest"}],"source_content_type":"text/x-python","patch_set":21,"id":"7956ff84_df655d69","line":76,"in_reply_to":"725251ef_0cd82715","updated":"2023-06-01 09:37:33.000000000","message":"Done","commit_id":"539400f4ac4e6f1beb106997016c0f4d55a4ebd4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf189205b15346a1c21f0f3f56d21419e32e8ecf","unresolved":true,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* Any integer value. 0 means connection is attempted only once"},{"line_number":75,"context_line":"\"\"\"),"},{"line_number":76,"context_line":"    cfg.BoolOpt(\u0027debug\u0027,"},{"line_number":77,"context_line":"        default\u003dFalse,"},{"line_number":78,"context_line":"        help\u003d\"\"\""},{"line_number":79,"context_line":"Enable DEBUG logging with manilaclient independently of the rest"}],"source_content_type":"text/x-python","patch_set":21,"id":"725251ef_0cd82715","line":76,"in_reply_to":"a63fb2d5_4d0a6868","updated":"2023-05-23 17:29:15.000000000","message":"I\u0027m OK with this.","commit_id":"539400f4ac4e6f1beb106997016c0f4d55a4ebd4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf189205b15346a1c21f0f3f56d21419e32e8ecf","unresolved":true,"context_lines":[{"line_number":107,"context_line":"            ks_loading.get_session_conf_options() +"},{"line_number":108,"context_line":"            ks_loading.get_auth_common_conf_options() +"},{"line_number":109,"context_line":"            ks_loading.get_auth_plugin_conf_options(\u0027password\u0027) +"},{"line_number":110,"context_line":"            ks_loading.get_auth_plugin_conf_options(\u0027v2password\u0027) +"},{"line_number":111,"context_line":"            ks_loading.get_auth_plugin_conf_options(\u0027v3password\u0027))"},{"line_number":112,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":33,"id":"5591f050_739275f3","line":110,"updated":"2023-05-23 17:29:15.000000000","message":"Wait, do we really want to authenticate using all the possible identity plugins ? IMHO, I think calling the Identity /v3 API seems sufficient, that\u0027s what we do for Ironic : \nhttps://github.com/openstack/nova/blob/master/nova/conf/ironic.py","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ea218c147927f0044643a83400eb206b6dc3add","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            ks_loading.get_session_conf_options() +"},{"line_number":108,"context_line":"            ks_loading.get_auth_common_conf_options() +"},{"line_number":109,"context_line":"            ks_loading.get_auth_plugin_conf_options(\u0027password\u0027) +"},{"line_number":110,"context_line":"            ks_loading.get_auth_plugin_conf_options(\u0027v2password\u0027) +"},{"line_number":111,"context_line":"            ks_loading.get_auth_plugin_conf_options(\u0027v3password\u0027))"},{"line_number":112,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":33,"id":"c482d54b_d484715e","line":110,"in_reply_to":"5591f050_739275f3","updated":"2023-06-01 09:37:33.000000000","message":"Done","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"34685de7964396c05b59cc5fc10cf2bd3e552679","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from nova.conf import utils as confutils"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"DEFAULT_SERVICE_TYPE \u003d \u0027shared-file-system\u0027"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"manila_group \u003d cfg.OptGroup("},{"line_number":21,"context_line":"    \u0027manila\u0027,"}],"source_content_type":"text/x-python","patch_set":38,"id":"da8b025a_f5a40d4b","line":18,"updated":"2023-11-15 13:47:49.000000000","message":"See https://review.opendev.org/c/openstack/nova/+/831194/22..38/nova/utils.py#995 about dash versus underscore.","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4afa5f52af3521f6257c46a37cd083bd055779ff","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from nova.conf import utils as confutils"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"DEFAULT_SERVICE_TYPE \u003d \u0027shared-file-system\u0027"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"manila_group \u003d cfg.OptGroup("},{"line_number":21,"context_line":"    \u0027manila\u0027,"}],"source_content_type":"text/x-python","patch_set":38,"id":"f395a1d8_f3fa205f","line":18,"in_reply_to":"869dc876_f8b26ba9","updated":"2023-11-28 08:46:40.000000000","message":"Acknowledged","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"92a8fd50e99c2af13419f7cb326db01cce9bf888","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from nova.conf import utils as confutils"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"DEFAULT_SERVICE_TYPE \u003d \u0027shared-file-system\u0027"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"manila_group \u003d cfg.OptGroup("},{"line_number":21,"context_line":"    \u0027manila\u0027,"}],"source_content_type":"text/x-python","patch_set":38,"id":"869dc876_f8b26ba9","line":18,"in_reply_to":"da8b025a_f5a40d4b","updated":"2023-11-21 14:28:10.000000000","message":"The name of the service is \u0027shared-file-system\u0027.\nHowever, the sdk attribute to describe the service method and get a proxy uses \u0027shared_file_system\u0027.\nI guess this is most probably because python\u0027s attributes should use \u0027_\u0027 and not \u0027-\u0027.\nThis is the reason why I used getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027)) later.\n\nTo my mind that better reflects the \"reality\".","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"34685de7964396c05b59cc5fc10cf2bd3e552679","unresolved":true,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Possible values:"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"* A positive integer or 0 (default value is 60)."},{"line_number":89,"context_line":"\"\"\"),"},{"line_number":90,"context_line":"    cfg.BoolOpt(\u0027debug\u0027,"},{"line_number":91,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":38,"id":"5f9e1308_d0ea8268","line":88,"updated":"2023-11-15 13:47:49.000000000","message":"* Does 0 mean wait forever or mean 0 seconds wait? \n* The comment about the default 60 and the actual default value (30) are not in sync.","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"92a8fd50e99c2af13419f7cb326db01cce9bf888","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Possible values:"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"* A positive integer or 0 (default value is 60)."},{"line_number":89,"context_line":"\"\"\"),"},{"line_number":90,"context_line":"    cfg.BoolOpt(\u0027debug\u0027,"},{"line_number":91,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":38,"id":"d6f91e32_c4ede6e6","line":88,"in_reply_to":"5f9e1308_d0ea8268","updated":"2023-11-21 14:28:10.000000000","message":"I clarified it. Thx.","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2b265a5e9c95298d859967fca882202653dd1942","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Possible values:"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"* A positive integer or 0 (default value is 60)."},{"line_number":89,"context_line":"\"\"\"),"},{"line_number":90,"context_line":"    cfg.BoolOpt(\u0027debug\u0027,"},{"line_number":91,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":38,"id":"ad6b5cfb_2837d619","line":88,"in_reply_to":"7e1b3c93_0fbe6636","updated":"2024-01-29 14:48:00.000000000","message":"looks good. thanks","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":true,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Possible values:"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"* A positive integer or 0 (default value is 60)."},{"line_number":89,"context_line":"\"\"\"),"},{"line_number":90,"context_line":"    cfg.BoolOpt(\u0027debug\u0027,"},{"line_number":91,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":38,"id":"7e1b3c93_0fbe6636","line":88,"in_reply_to":"d5606986_ded18383","updated":"2024-01-22 17:09:34.000000000","message":"I have reviewed the naming of the opt. And try to make the description better.\nPlease let me what you think about it.","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4afa5f52af3521f6257c46a37cd083bd055779ff","unresolved":true,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Possible values:"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"* A positive integer or 0 (default value is 60)."},{"line_number":89,"context_line":"\"\"\"),"},{"line_number":90,"context_line":"    cfg.BoolOpt(\u0027debug\u0027,"},{"line_number":91,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":38,"id":"d5606986_ded18383","line":88,"in_reply_to":"d6f91e32_c4ede6e6","updated":"2023-11-28 08:46:40.000000000","message":"Sorry I still don\u0027t get what 0 means here:\n* 0 means no timeout (0s) -\u003e no timeout for me means the call will wait forever, but (0s) means for me it does not wait at all.","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":true,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* Any string representing region name"},{"line_number":66,"context_line":"\"\"\"),"},{"line_number":67,"context_line":"    cfg.IntOpt(\u0027http_retries\u0027,"},{"line_number":68,"context_line":"               default\u003d3,"},{"line_number":69,"context_line":"               min\u003d0,"},{"line_number":70,"context_line":"               help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":39,"id":"0b35f1d4_89e3c33c","line":67,"updated":"2024-01-12 15:55:55.000000000","message":"is that option used by manilaclient ?","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* Any string representing region name"},{"line_number":66,"context_line":"\"\"\"),"},{"line_number":67,"context_line":"    cfg.IntOpt(\u0027http_retries\u0027,"},{"line_number":68,"context_line":"               default\u003d3,"},{"line_number":69,"context_line":"               min\u003d0,"},{"line_number":70,"context_line":"               help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":39,"id":"27063626_2cf664d0","line":67,"in_reply_to":"0b35f1d4_89e3c33c","updated":"2024-01-22 17:09:34.000000000","message":"So yes, these options were used by the mail client.\nHowever, as we switched to the OpenStack SDK, they are not required anymore. So, I have just removed all the ones related to connection settings.\nI understand that the SDK\u0027s specific connection configuration (ex, SSL) can be set in the service name section of the configuration file.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":true,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"* Any integer value. 0 means connection is attempted only once"},{"line_number":79,"context_line":"\"\"\"),"},{"line_number":80,"context_line":"    cfg.IntOpt(\u0027action_timeout\u0027,"},{"line_number":81,"context_line":"               default\u003d30,"},{"line_number":82,"context_line":"               help\u003d\"\"\""},{"line_number":83,"context_line":"Maximum amount of time that a function or method should wait for a response"}],"source_content_type":"text/x-python","patch_set":39,"id":"1397e555_b9c8c1df","line":80,"updated":"2024-01-12 15:55:55.000000000","message":"is that option used by manilaclient ?","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"* Any integer value. 0 means connection is attempted only once"},{"line_number":79,"context_line":"\"\"\"),"},{"line_number":80,"context_line":"    cfg.IntOpt(\u0027action_timeout\u0027,"},{"line_number":81,"context_line":"               default\u003d30,"},{"line_number":82,"context_line":"               help\u003d\"\"\""},{"line_number":83,"context_line":"Maximum amount of time that a function or method should wait for a response"}],"source_content_type":"text/x-python","patch_set":39,"id":"f3465322_41bd73c2","line":80,"in_reply_to":"1397e555_b9c8c1df","updated":"2024-01-22 17:09:34.000000000","message":"see #67.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"945de2ed50c52fb6eaa2b85876c30d331a4ed6a1","unresolved":true,"context_lines":[{"line_number":23,"context_line":"    help\u003d\"Configuration options for the share-file-system service\")"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"manila_opts \u003d ["},{"line_number":26,"context_line":"    cfg.IntOpt(\u0027share_apply_policy_timeout\u0027,"},{"line_number":27,"context_line":"               default\u003d30,"},{"line_number":28,"context_line":"               help\u003d\"\"\""},{"line_number":29,"context_line":"Maximum duration to await a response from the Manila service for the"},{"line_number":30,"context_line":"application of a share policy before experiencing a timeout."},{"line_number":31,"context_line":"0 means do not wait (0s)."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Possible values:"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7f12ac9d_7e8a83dc","line":31,"range":{"start_line":26,"start_character":0,"end_line":31,"end_character":25},"updated":"2024-01-29 17:59:02.000000000","message":"This retry happening synchronously during the share attach REST API call so this should not be set to longer than our RPC call timeout otherwise that will happen first leading to HTTP 500","commit_id":"bbb3115d43136d417c678ad6bde4b815f7d6404b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e4145b8725ac99e0405e6fcf7bc148fadbc34062","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    help\u003d\"Configuration options for the share-file-system service\")"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"manila_opts \u003d ["},{"line_number":26,"context_line":"    cfg.IntOpt(\u0027share_apply_policy_timeout\u0027,"},{"line_number":27,"context_line":"               default\u003d30,"},{"line_number":28,"context_line":"               help\u003d\"\"\""},{"line_number":29,"context_line":"Maximum duration to await a response from the Manila service for the"},{"line_number":30,"context_line":"application of a share policy before experiencing a timeout."},{"line_number":31,"context_line":"0 means do not wait (0s)."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Possible values:"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7e6acaf0_39d128bd","line":31,"range":{"start_line":26,"start_character":0,"end_line":31,"end_character":25},"in_reply_to":"2c1a34e4_06db6c79","updated":"2024-02-13 14:58:04.000000000","message":"Done","commit_id":"bbb3115d43136d417c678ad6bde4b815f7d6404b"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7bde640d7853c541f5598e8e2d8211afc1d8ee1a","unresolved":true,"context_lines":[{"line_number":23,"context_line":"    help\u003d\"Configuration options for the share-file-system service\")"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"manila_opts \u003d ["},{"line_number":26,"context_line":"    cfg.IntOpt(\u0027share_apply_policy_timeout\u0027,"},{"line_number":27,"context_line":"               default\u003d30,"},{"line_number":28,"context_line":"               help\u003d\"\"\""},{"line_number":29,"context_line":"Maximum duration to await a response from the Manila service for the"},{"line_number":30,"context_line":"application of a share policy before experiencing a timeout."},{"line_number":31,"context_line":"0 means do not wait (0s)."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Possible values:"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"2c1a34e4_06db6c79","line":31,"range":{"start_line":26,"start_character":0,"end_line":31,"end_character":25},"in_reply_to":"7f12ac9d_7e8a83dc","updated":"2024-02-13 10:12:56.000000000","message":"As discussed this should be ok as the \"mount_share\" will now be asynchronous.","commit_id":"bbb3115d43136d417c678ad6bde4b815f7d6404b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e4145b8725ac99e0405e6fcf7bc148fadbc34062","unresolved":true,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* A positive integer or 0 (default value is 10)."},{"line_number":36,"context_line":"\"\"\"),"},{"line_number":37,"context_line":"    cfg.IntOpt(\u0027share_status_timeout\u0027,"},{"line_number":38,"context_line":"               default\u003d15,"},{"line_number":39,"context_line":"               help\u003d\"\"\""},{"line_number":40,"context_line":"Maximum duration to await the compute node to have a coherent"}],"source_content_type":"text/x-python","patch_set":41,"id":"e234851a_46d43189","line":37,"updated":"2024-02-13 14:58:04.000000000","message":"We don\u0027t need this nova does not need to poll the compute. The user can poll the share mapping status via the REST API. Nova just need to reject the server start request if there are share mappings in other than INACTIVE state.","commit_id":"5089defa87172ba6e0d01b274a1dbdb3a18e3de8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f306d3a1e5d7a62ede47bec95dbdee0cf0accbca","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* A positive integer or 0 (default value is 10)."},{"line_number":36,"context_line":"\"\"\"),"},{"line_number":37,"context_line":"    cfg.IntOpt(\u0027share_status_timeout\u0027,"},{"line_number":38,"context_line":"               default\u003d15,"},{"line_number":39,"context_line":"               help\u003d\"\"\""},{"line_number":40,"context_line":"Maximum duration to await the compute node to have a coherent"}],"source_content_type":"text/x-python","patch_set":41,"id":"3d1f1d5a_a6dcc571","line":37,"in_reply_to":"e234851a_46d43189","updated":"2024-02-14 11:19:23.000000000","message":"Oh was a good point, I think Uggla fixed it.","commit_id":"5089defa87172ba6e0d01b274a1dbdb3a18e3de8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":true,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"manila_opts \u003d ["},{"line_number":26,"context_line":"    cfg.IntOpt(\u0027share_apply_policy_timeout\u0027,"},{"line_number":27,"context_line":"               default\u003d10,"},{"line_number":28,"context_line":"               help\u003d\"\"\""},{"line_number":29,"context_line":"Maximum duration to await a response from the Manila service for the"},{"line_number":30,"context_line":"application of a share policy before experiencing a timeout."}],"source_content_type":"text/x-python","patch_set":43,"id":"de8f2c5a_a834e5f0","line":27,"updated":"2024-02-29 12:04:37.000000000","message":"nit:\n\n```\nmin\u003d0\n```","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"46e9af927f16eff06806528a2250bb84114eb2c6","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"manila_opts \u003d ["},{"line_number":26,"context_line":"    cfg.IntOpt(\u0027share_apply_policy_timeout\u0027,"},{"line_number":27,"context_line":"               default\u003d10,"},{"line_number":28,"context_line":"               help\u003d\"\"\""},{"line_number":29,"context_line":"Maximum duration to await a response from the Manila service for the"},{"line_number":30,"context_line":"application of a share policy before experiencing a timeout."}],"source_content_type":"text/x-python","patch_set":43,"id":"cc552cf3_81bd6083","line":27,"in_reply_to":"68ed8958_616de95c","updated":"2024-06-05 12:48:31.000000000","message":"Done","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5019fc72a40ef361a81d82ebae2c0b7ff8e811dd","unresolved":true,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"manila_opts \u003d ["},{"line_number":26,"context_line":"    cfg.IntOpt(\u0027share_apply_policy_timeout\u0027,"},{"line_number":27,"context_line":"               default\u003d10,"},{"line_number":28,"context_line":"               help\u003d\"\"\""},{"line_number":29,"context_line":"Maximum duration to await a response from the Manila service for the"},{"line_number":30,"context_line":"application of a share policy before experiencing a timeout."}],"source_content_type":"text/x-python","patch_set":43,"id":"68ed8958_616de95c","line":27,"in_reply_to":"c2646297_b4fd2483","updated":"2024-05-22 08:45:04.000000000","message":"I thnink what stephenfin suggests is to declare the minimum value for the opt along with the already defined default. I.e declare that the timeout config cannot be set to a negative value.","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"3782b5594cd503300af8a1cd784403808d59e008","unresolved":true,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"manila_opts \u003d ["},{"line_number":26,"context_line":"    cfg.IntOpt(\u0027share_apply_policy_timeout\u0027,"},{"line_number":27,"context_line":"               default\u003d10,"},{"line_number":28,"context_line":"               help\u003d\"\"\""},{"line_number":29,"context_line":"Maximum duration to await a response from the Manila service for the"},{"line_number":30,"context_line":"application of a share policy before experiencing a timeout."}],"source_content_type":"text/x-python","patch_set":43,"id":"c2646297_b4fd2483","line":27,"in_reply_to":"de8f2c5a_a834e5f0","updated":"2024-05-15 12:00:16.000000000","message":"0 could work for testing, but 10 is better for a real env as policy application can spend time.","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":true,"context_lines":[{"line_number":26,"context_line":"    cfg.IntOpt(\u0027share_apply_policy_timeout\u0027,"},{"line_number":27,"context_line":"               default\u003d10,"},{"line_number":28,"context_line":"               help\u003d\"\"\""},{"line_number":29,"context_line":"Maximum duration to await a response from the Manila service for the"},{"line_number":30,"context_line":"application of a share policy before experiencing a timeout."},{"line_number":31,"context_line":"0 means do not wait (0s)."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"18e48b73_873ced6c","line":29,"updated":"2024-02-29 12:04:37.000000000","message":"nit: It would be nice to have a summary and description, e.g.:\n\n```\nTimeout period for share policy application.\n\nMaximum duration to wait for a response ...\n```","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"3782b5594cd503300af8a1cd784403808d59e008","unresolved":true,"context_lines":[{"line_number":26,"context_line":"    cfg.IntOpt(\u0027share_apply_policy_timeout\u0027,"},{"line_number":27,"context_line":"               default\u003d10,"},{"line_number":28,"context_line":"               help\u003d\"\"\""},{"line_number":29,"context_line":"Maximum duration to await a response from the Manila service for the"},{"line_number":30,"context_line":"application of a share policy before experiencing a timeout."},{"line_number":31,"context_line":"0 means do not wait (0s)."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"4025ab45_e72d7c10","line":29,"in_reply_to":"18e48b73_873ced6c","updated":"2024-05-15 12:00:16.000000000","message":"Sorry Stephen, I don\u0027t understand your comment. Maybe you were a bit fast.\nBecause here we have the description:\n\u003e Maximum duration to await a response from the Manila service for the\n  application of a share policy before experiencing a timeout.\n  0 means do not wait (0s).","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5019fc72a40ef361a81d82ebae2c0b7ff8e811dd","unresolved":true,"context_lines":[{"line_number":26,"context_line":"    cfg.IntOpt(\u0027share_apply_policy_timeout\u0027,"},{"line_number":27,"context_line":"               default\u003d10,"},{"line_number":28,"context_line":"               help\u003d\"\"\""},{"line_number":29,"context_line":"Maximum duration to await a response from the Manila service for the"},{"line_number":30,"context_line":"application of a share policy before experiencing a timeout."},{"line_number":31,"context_line":"0 means do not wait (0s)."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"889f7282_47c7f6df","line":29,"in_reply_to":"4025ab45_e72d7c10","updated":"2024-05-22 08:45:04.000000000","message":"I thinks stephenfin suggest to inject and empty line between the first sentence and the rest of the description to make a nicer formatting in the generated documentation.","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"46e9af927f16eff06806528a2250bb84114eb2c6","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    cfg.IntOpt(\u0027share_apply_policy_timeout\u0027,"},{"line_number":27,"context_line":"               default\u003d10,"},{"line_number":28,"context_line":"               help\u003d\"\"\""},{"line_number":29,"context_line":"Maximum duration to await a response from the Manila service for the"},{"line_number":30,"context_line":"application of a share policy before experiencing a timeout."},{"line_number":31,"context_line":"0 means do not wait (0s)."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"b9748e68_c613c61e","line":29,"in_reply_to":"889f7282_47c7f6df","updated":"2024-06-05 12:48:31.000000000","message":"Done","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"}],"nova/context.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf189205b15346a1c21f0f3f56d21419e32e8ecf","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            self.service_catalog \u003d [s for s in service_catalog"},{"line_number":116,"context_line":"                if s.get(\u0027type\u0027) in (\u0027image\u0027, \u0027block-storage\u0027, \u0027volumev3\u0027,"},{"line_number":117,"context_line":"                                     \u0027key-manager\u0027, \u0027placement\u0027, \u0027network\u0027,"},{"line_number":118,"context_line":"                                     \u0027accelerator\u0027, \u0027sharev2\u0027)]"},{"line_number":119,"context_line":"        else:"},{"line_number":120,"context_line":"            # if list is empty or none"},{"line_number":121,"context_line":"            self.service_catalog \u003d []"}],"source_content_type":"text/x-python","patch_set":33,"id":"2b161af0_530eeda6","line":118,"range":{"start_line":118,"start_character":53,"end_line":118,"end_character":60},"updated":"2023-05-23 17:29:15.000000000","message":"orly ? this is the name of the service type in the catalog ?\n\nlater: argh, yes 😭 https://docs.openstack.org/manila/latest/install/install-controller-ubuntu.html#prerequisites","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"}],"nova/exception.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"class ManilaConnectionFailed(NovaException):"},{"line_number":147,"context_line":"    msg_fmt \u003d _(\"Connection to manila host failed: %(reason)s\")"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"class UnsupportedCinderAPIVersion(NovaException):"}],"source_content_type":"text/x-python","patch_set":11,"id":"37a9b647_eeb9eb83","line":147,"range":{"start_line":147,"start_character":31,"end_line":147,"end_character":42},"updated":"2022-08-17 11:01:45.000000000","message":"Do we raise this when communication with the Manila API fails. If yes, then use \"manila service\" instead of \"manila host\"","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"class ManilaConnectionFailed(NovaException):"},{"line_number":147,"context_line":"    msg_fmt \u003d _(\"Connection to manila host failed: %(reason)s\")"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"class UnsupportedCinderAPIVersion(NovaException):"}],"source_content_type":"text/x-python","patch_set":11,"id":"10ad1ec0_8c4b54be","line":147,"range":{"start_line":147,"start_character":31,"end_line":147,"end_character":42},"in_reply_to":"37a9b647_eeb9eb83","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":703,"context_line":""},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"class ShareMappingAlreadyExists(NotFound):"},{"line_number":706,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s already associated to this server.\")"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"class ShareProtocolUnknown(NotFound):"}],"source_content_type":"text/x-python","patch_set":11,"id":"c192e7d7_0b1e04fe","line":706,"range":{"start_line":706,"start_character":55,"end_line":706,"end_character":70},"updated":"2022-08-17 11:01:45.000000000","message":"I would log the server uuid","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d85bb67e5c4f427ff733e52cb242f7763dfba74e","unresolved":false,"context_lines":[{"line_number":703,"context_line":""},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"class ShareMappingAlreadyExists(NotFound):"},{"line_number":706,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s already associated to this server.\")"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"class ShareProtocolUnknown(NotFound):"}],"source_content_type":"text/x-python","patch_set":11,"id":"10f45602_baedec74","line":706,"range":{"start_line":706,"start_character":55,"end_line":706,"end_character":70},"in_reply_to":"c192e7d7_0b1e04fe","updated":"2022-09-06 16:05:52.000000000","message":"Done","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":711,"context_line":""},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"class ShareUmountError(NovaException):"},{"line_number":714,"context_line":"    msg_fmt \u003d _(\"Share id %(share_id)s umount error.\")"},{"line_number":715,"context_line":""},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"class ShareMountError(NovaException):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3edd325c_aa61011a","line":714,"updated":"2022-08-17 11:01:45.000000000","message":"you probably want to include the cause of the error by including the underlying exception test (or parts of it)","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":711,"context_line":""},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"class ShareUmountError(NovaException):"},{"line_number":714,"context_line":"    msg_fmt \u003d _(\"Share id %(share_id)s umount error.\")"},{"line_number":715,"context_line":""},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"class ShareMountError(NovaException):"}],"source_content_type":"text/x-python","patch_set":11,"id":"dbade560_25d05e9a","line":714,"in_reply_to":"3edd325c_aa61011a","updated":"2022-08-26 08:44:46.000000000","message":"s/test/text/","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d85bb67e5c4f427ff733e52cb242f7763dfba74e","unresolved":false,"context_lines":[{"line_number":711,"context_line":""},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"class ShareUmountError(NovaException):"},{"line_number":714,"context_line":"    msg_fmt \u003d _(\"Share id %(share_id)s umount error.\")"},{"line_number":715,"context_line":""},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"class ShareMountError(NovaException):"}],"source_content_type":"text/x-python","patch_set":11,"id":"abd074ec_6f374940","line":714,"in_reply_to":"dbade560_25d05e9a","updated":"2022-09-06 16:05:52.000000000","message":"Done","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":715,"context_line":""},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"class ShareMountError(NovaException):"},{"line_number":718,"context_line":"    msg_fmt \u003d _(\"Share id %(share_id)s mount error.\")"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"class AccessNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":11,"id":"50feb018_db469272","line":718,"updated":"2022-08-17 11:01:45.000000000","message":"ditto","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d85bb67e5c4f427ff733e52cb242f7763dfba74e","unresolved":false,"context_lines":[{"line_number":715,"context_line":""},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"class ShareMountError(NovaException):"},{"line_number":718,"context_line":"    msg_fmt \u003d _(\"Share id %(share_id)s mount error.\")"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"class AccessNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":11,"id":"e205d751_c3034504","line":718,"in_reply_to":"50feb018_db469272","updated":"2022-09-06 16:05:52.000000000","message":"Done","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":719,"context_line":""},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"class AccessNotFound(NotFound):"},{"line_number":722,"context_line":"    msg_fmt \u003d _(\"Access %(access_id)s could not be found.\")"},{"line_number":723,"context_line":""},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"class VolumeTypeNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":11,"id":"19d896be_3d51b400","line":722,"updated":"2022-08-17 11:01:45.000000000","message":"You need to be a bit more specific about what is an Access, is it a Share Access in manila?","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d85bb67e5c4f427ff733e52cb242f7763dfba74e","unresolved":false,"context_lines":[{"line_number":719,"context_line":""},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"class AccessNotFound(NotFound):"},{"line_number":722,"context_line":"    msg_fmt \u003d _(\"Access %(access_id)s could not be found.\")"},{"line_number":723,"context_line":""},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"class VolumeTypeNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":11,"id":"723a600b_b0a517ad","line":722,"in_reply_to":"19d896be_3d51b400","updated":"2022-09-06 16:05:52.000000000","message":"Absolutely, this is share access in Manila that defined if clients can access or not the share.","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"34685de7964396c05b59cc5fc10cf2bd3e552679","unresolved":true,"context_lines":[{"line_number":496,"context_line":"                \"%(method)s while the instance is in this state.\")"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"class InstanceRequireExtraSpec(Invalid):"},{"line_number":500,"context_line":"    msg_fmt \u003d _(\"Instance %(instance_uuid)s %(attr)s %(state)s. Cannot \""},{"line_number":501,"context_line":"                \"%(method)s require extra spec parameters.\")"},{"line_number":502,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"bec8869f_68ffd019","line":499,"updated":"2023-11-15 13:47:49.000000000","message":"Is this used somewhere?\nI only look at it until https://review.opendev.org/c/openstack/nova/+/871642 but I dont see a usage:\n```\n❯ grep InstanceRequireExtraSpec -R nova\nnova/exception.py:class InstanceRequireExtraSpec(Invalid):\n```","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"92a8fd50e99c2af13419f7cb326db01cce9bf888","unresolved":false,"context_lines":[{"line_number":496,"context_line":"                \"%(method)s while the instance is in this state.\")"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"class InstanceRequireExtraSpec(Invalid):"},{"line_number":500,"context_line":"    msg_fmt \u003d _(\"Instance %(instance_uuid)s %(attr)s %(state)s. Cannot \""},{"line_number":501,"context_line":"                \"%(method)s require extra spec parameters.\")"},{"line_number":502,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"1ece0844_665d8199","line":499,"in_reply_to":"bec8869f_68ffd019","updated":"2023-11-21 14:28:10.000000000","message":"Ack","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"34685de7964396c05b59cc5fc10cf2bd3e552679","unresolved":true,"context_lines":[{"line_number":717,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s could not be found.\")"},{"line_number":718,"context_line":""},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"class ShareExportLocationNotFound(NotFound):"},{"line_number":721,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s does not have an export location.\")"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"15a63567_11d5a341","line":720,"updated":"2023-11-15 13:47:49.000000000","message":"I don\u0027t see a usage for this either","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"92a8fd50e99c2af13419f7cb326db01cce9bf888","unresolved":false,"context_lines":[{"line_number":717,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s could not be found.\")"},{"line_number":718,"context_line":""},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"class ShareExportLocationNotFound(NotFound):"},{"line_number":721,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s does not have an export location.\")"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"1d7045ef_432fb96d","line":720,"in_reply_to":"15a63567_11d5a341","updated":"2023-11-21 14:28:10.000000000","message":"Ack","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f306d3a1e5d7a62ede47bec95dbdee0cf0accbca","unresolved":true,"context_lines":[{"line_number":708,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s could not be found.\")"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"class ShareMappingAlreadyExists(NotFound):"},{"line_number":712,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s already associated to this server.\")"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"c2c294c4_987e25e7","line":711,"updated":"2024-02-14 11:19:23.000000000","message":"I don\u0027t see where you raise this exception. Probably in the above stack.","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8f01f94aa9849af29ab5393b869c722a9edf35fb","unresolved":true,"context_lines":[{"line_number":708,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s could not be found.\")"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"class ShareMappingAlreadyExists(NotFound):"},{"line_number":712,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s already associated to this server.\")"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"9b48bb83_e50ef555","line":711,"in_reply_to":"425969a9_f54192d8","updated":"2024-02-23 10:37:09.000000000","message":"In general, we prefer to create the exceptions where they are used.","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":false,"context_lines":[{"line_number":708,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s could not be found.\")"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"class ShareMappingAlreadyExists(NotFound):"},{"line_number":712,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s already associated to this server.\")"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"6747292c_bc3203b2","line":711,"in_reply_to":"9b48bb83_e50ef555","updated":"2024-02-29 12:04:37.000000000","message":"This should be done later, yes, but I do see it used in I0255a5697cd4ea148bd91c4f6fd183841d69a333 so I\u0027m okay doing it here unless we need to rework.","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"778cf19a51fdb8bac211971494b02b1384db740f","unresolved":true,"context_lines":[{"line_number":708,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s could not be found.\")"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"class ShareMappingAlreadyExists(NotFound):"},{"line_number":712,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s already associated to this server.\")"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"425969a9_f54192d8","line":711,"in_reply_to":"c2c294c4_987e25e7","updated":"2024-02-16 14:09:46.000000000","message":"Oh. yes it could appear as dead code. \nThat\u0027s due to the fact that I wrote (at the beginning) all the exceptions up front to not forget them later.\nIt also make the rebase a bit easier.\n\nSo this exception is used later in the API patch.\n\nIs it really a concern ?\nPlease let me know if you really want me to move them.","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f306d3a1e5d7a62ede47bec95dbdee0cf0accbca","unresolved":true,"context_lines":[{"line_number":712,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s already associated to this server.\")"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"class ShareProtocolUnknown(NotFound):"},{"line_number":716,"context_line":"    msg_fmt \u003d _(\"Share protocol %(share_proto)s is unknown.\")"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"7189ed71_99db56b1","line":715,"updated":"2024-02-14 11:19:23.000000000","message":"ditto here, can\u0027t find this exception somewhere in the patch","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":false,"context_lines":[{"line_number":712,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s already associated to this server.\")"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"class ShareProtocolUnknown(NotFound):"},{"line_number":716,"context_line":"    msg_fmt \u003d _(\"Share protocol %(share_proto)s is unknown.\")"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"89d23947_e75d4cf2","line":715,"in_reply_to":"460948ee_9b093234","updated":"2024-02-29 12:04:37.000000000","message":"As above, this is used in I3a4bca7f03cfa9a1bc20f3f9937bb9b44fe2cde3","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"778cf19a51fdb8bac211971494b02b1384db740f","unresolved":true,"context_lines":[{"line_number":712,"context_line":"    msg_fmt \u003d _(\"Share %(share_id)s already associated to this server.\")"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"class ShareProtocolUnknown(NotFound):"},{"line_number":716,"context_line":"    msg_fmt \u003d _(\"Share protocol %(share_proto)s is unknown.\")"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"460948ee_9b093234","line":715,"in_reply_to":"7189ed71_99db56b1","updated":"2024-02-16 14:09:46.000000000","message":"See above for the reason.\nThis exception is used later in the \"Ceph\" patch.","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"}],"nova/share/manila.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":2,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":11,"id":"5c1a7318_3892a526","line":1,"updated":"2022-08-17 11:01:45.000000000","message":"I don\u0027t think so :) please drop it","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":2,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":11,"id":"0a246fc9_14ff1065","line":1,"in_reply_to":"5c1a7318_3892a526","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def _load_auth_plugin(conf):"},{"line_number":56,"context_line":"    auth_plugin \u003d ks_loading.load_auth_from_conf_options(conf,"},{"line_number":57,"context_line":"                                    nova.conf.manila.manila_group.name)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    if auth_plugin:"}],"source_content_type":"text/x-python","patch_set":11,"id":"08dcce77_935ea2ef","line":56,"range":{"start_line":56,"start_character":56,"end_line":56,"end_character":58},"updated":"2022-08-17 11:01:45.000000000","message":"please wrap the line here, the next line is seriously over indented now","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"4f8363dda77df3698eb0bd41cda54431c81491e5","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def _load_auth_plugin(conf):"},{"line_number":56,"context_line":"    auth_plugin \u003d ks_loading.load_auth_from_conf_options(conf,"},{"line_number":57,"context_line":"                                    nova.conf.manila.manila_group.name)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    if auth_plugin:"}],"source_content_type":"text/x-python","patch_set":11,"id":"8bcd1609_0c86e23b","line":56,"range":{"start_line":56,"start_character":56,"end_line":56,"end_character":58},"in_reply_to":"08dcce77_935ea2ef","updated":"2022-08-25 17:01:37.000000000","message":"Done","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    :param context: The nova request context for auth."},{"line_number":122,"context_line":"    :param microversion: Optional microversion to check against the client."},{"line_number":123,"context_line":"        This implies that Manila v3 is required for any calls that require a"},{"line_number":124,"context_line":"        microversion. If the microversion is not available, this method will"},{"line_number":125,"context_line":"        raise an ManilaAPIVersionNotAvailable exception."},{"line_number":126,"context_line":"    :param skip_version_check: If True and a specific microversion is"}],"source_content_type":"text/x-python","patch_set":11,"id":"977f4aa6_d6b3bfc7","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":48},"updated":"2022-08-17 11:01:45.000000000","message":"this is copy-paste from Cinder. Manila does not have v3","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    :param context: The nova request context for auth."},{"line_number":122,"context_line":"    :param microversion: Optional microversion to check against the client."},{"line_number":123,"context_line":"        This implies that Manila v3 is required for any calls that require a"},{"line_number":124,"context_line":"        microversion. If the microversion is not available, this method will"},{"line_number":125,"context_line":"        raise an ManilaAPIVersionNotAvailable exception."},{"line_number":126,"context_line":"    :param skip_version_check: If True and a specific microversion is"}],"source_content_type":"text/x-python","patch_set":11,"id":"ad70a880_aa4326c0","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":48},"in_reply_to":"977f4aa6_d6b3bfc7","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":129,"context_line":"        same microversion was successful."},{"line_number":130,"context_line":"    :param check_only: If True, don\u0027t build the actual client; just do the"},{"line_number":131,"context_line":"        setup and version checking."},{"line_number":132,"context_line":"    :raises: UnsupportedManilaAPIVersion if a major version other than 3 is"},{"line_number":133,"context_line":"        requested."},{"line_number":134,"context_line":"    :raises: ManilaAPIVersionNotAvailable if microversion checking is requested"},{"line_number":135,"context_line":"        and the specified microversion is higher than what the service can"}],"source_content_type":"text/x-python","patch_set":11,"id":"4ff7d29f_658720e7","line":132,"range":{"start_line":132,"start_character":66,"end_line":132,"end_character":72},"updated":"2022-08-17 11:01:45.000000000","message":"ditto","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        same microversion was successful."},{"line_number":130,"context_line":"    :param check_only: If True, don\u0027t build the actual client; just do the"},{"line_number":131,"context_line":"        setup and version checking."},{"line_number":132,"context_line":"    :raises: UnsupportedManilaAPIVersion if a major version other than 3 is"},{"line_number":133,"context_line":"        requested."},{"line_number":134,"context_line":"    :raises: ManilaAPIVersionNotAvailable if microversion checking is requested"},{"line_number":135,"context_line":"        and the specified microversion is higher than what the service can"}],"source_content_type":"text/x-python","patch_set":11,"id":"7ed2dc85_75e7237f","line":132,"range":{"start_line":132,"start_character":66,"end_line":132,"end_character":72},"in_reply_to":"4ff7d29f_658720e7","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":140,"context_line":"    auth, service_parameters, url \u003d _get_manilaclient_parameters(context)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    # Version 1 is deprecated so use the version 2."},{"line_number":143,"context_line":"    # The current release (Yoga) of client and server uses 2.69."},{"line_number":144,"context_line":"    # So we try to use that version as a minimum."},{"line_number":145,"context_line":"    # Check if version 2.69 is supported by client."},{"line_number":146,"context_line":"    version \u003d manila_client.api_versions.APIVersion(\u00272.69\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"b0104bfb_0a9a8314","line":143,"range":{"start_line":143,"start_character":47,"end_line":143,"end_character":64},"updated":"2022-08-17 11:01:45.000000000","message":"afaik server has 2.70 as maximum in Yoga https://docs.openstack.org/manila/latest/contributor/api_microversion_history.html#maximum-in-yoga","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    auth, service_parameters, url \u003d _get_manilaclient_parameters(context)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    # Version 1 is deprecated so use the version 2."},{"line_number":143,"context_line":"    # The current release (Yoga) of client and server uses 2.69."},{"line_number":144,"context_line":"    # So we try to use that version as a minimum."},{"line_number":145,"context_line":"    # Check if version 2.69 is supported by client."},{"line_number":146,"context_line":"    version \u003d manila_client.api_versions.APIVersion(\u00272.69\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"0aae94e0_9ff53e0a","line":143,"range":{"start_line":143,"start_character":47,"end_line":143,"end_character":64},"in_reply_to":"77348531_516d0a32","updated":"2022-08-26 08:44:46.000000000","message":"good point. Lets stick to 2.69 then","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"4f8363dda77df3698eb0bd41cda54431c81491e5","unresolved":true,"context_lines":[{"line_number":140,"context_line":"    auth, service_parameters, url \u003d _get_manilaclient_parameters(context)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    # Version 1 is deprecated so use the version 2."},{"line_number":143,"context_line":"    # The current release (Yoga) of client and server uses 2.69."},{"line_number":144,"context_line":"    # So we try to use that version as a minimum."},{"line_number":145,"context_line":"    # Check if version 2.69 is supported by client."},{"line_number":146,"context_line":"    version \u003d manila_client.api_versions.APIVersion(\u00272.69\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"77348531_516d0a32","line":143,"range":{"start_line":143,"start_character":47,"end_line":143,"end_character":64},"in_reply_to":"b0104bfb_0a9a8314","updated":"2022-08-25 17:01:37.000000000","message":"Oh ! but the client seems not: https://github.com/openstack/python-manilaclient/blob/c1c1133a7f912f6d4136ace537a1e5d80ec81bb6/manilaclient/api_versions.py#L30","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a460cdb6f15069a839b6b02b119694f9b44a5ff","unresolved":true,"context_lines":[{"line_number":149,"context_line":"        raise exception.UnsupportedManilaAPIVersion(version\u003dversion)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    # Start a version 2.69 client to check version available on server."},{"line_number":152,"context_line":"    client \u003d manila_client.Client(version,"},{"line_number":153,"context_line":"                                session\u003d_SESSION,"},{"line_number":154,"context_line":"                                auth\u003dauth,"},{"line_number":155,"context_line":"                                retries\u003dCONF.manila.http_retries,"}],"source_content_type":"text/x-python","patch_set":11,"id":"76bfcbee_98b561b8","line":152,"range":{"start_line":152,"start_character":33,"end_line":152,"end_character":35},"updated":"2022-08-17 11:01:45.000000000","message":"wrap the line here","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"4f8363dda77df3698eb0bd41cda54431c81491e5","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        raise exception.UnsupportedManilaAPIVersion(version\u003dversion)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    # Start a version 2.69 client to check version available on server."},{"line_number":152,"context_line":"    client \u003d manila_client.Client(version,"},{"line_number":153,"context_line":"                                session\u003d_SESSION,"},{"line_number":154,"context_line":"                                auth\u003dauth,"},{"line_number":155,"context_line":"                                retries\u003dCONF.manila.http_retries,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aea7310_8bbea872","line":152,"range":{"start_line":152,"start_character":33,"end_line":152,"end_character":35},"in_reply_to":"76bfcbee_98b561b8","updated":"2022-08-25 17:01:37.000000000","message":"Done","commit_id":"5d0b16e3d50b8d224331157ff847f2b2df783513"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":188,"context_line":"                                **service_parameters)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"def _untranslate_share_summary_view(context, share, export_location):"},{"line_number":192,"context_line":"    \"\"\"Maps keys for share details view.\"\"\""},{"line_number":193,"context_line":"    d \u003d {}"},{"line_number":194,"context_line":"    d[\u0027id\u0027] \u003d share.id"}],"source_content_type":"text/x-python","patch_set":12,"id":"b96ea030_6cdcfe9f","line":191,"updated":"2022-08-26 08:44:46.000000000","message":"What is the reason to unpack the Share object we get from manila to a dict? \n\nIf you really want to transform the Share object then I suggest to create a class (doesn\u0027t need to be an ovo) on Nova side that wraps the manila client Share object. Having proper classes over dict helps when somebody needs to define the signature of functions and that what data is available to what function.","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d85bb67e5c4f427ff733e52cb242f7763dfba74e","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                                **service_parameters)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"def _untranslate_share_summary_view(context, share, export_location):"},{"line_number":192,"context_line":"    \"\"\"Maps keys for share details view.\"\"\""},{"line_number":193,"context_line":"    d \u003d {}"},{"line_number":194,"context_line":"    d[\u0027id\u0027] \u003d share.id"}],"source_content_type":"text/x-python","patch_set":12,"id":"46ed11fa_2f50ca7a","line":191,"in_reply_to":"b96ea030_6cdcfe9f","updated":"2022-09-06 16:05:52.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":209,"context_line":"    d[\u0027is_public\u0027] \u003d share.is_public"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    # if hasattr(share, \u0027migration_status\u0027):"},{"line_number":212,"context_line":"    #     d[\u0027migration_status\u0027] \u003d share.migration_status"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    return d"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"96258ae3_f7336f5a","line":212,"updated":"2022-08-26 08:44:46.000000000","message":"some leftovers or is this actually a TODO for later?","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    d[\u0027is_public\u0027] \u003d share.is_public"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    # if hasattr(share, \u0027migration_status\u0027):"},{"line_number":212,"context_line":"    #     d[\u0027migration_status\u0027] \u003d share.migration_status"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    return d"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"8d1cbe22_204dfaf4","line":212,"in_reply_to":"96258ae3_f7336f5a","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"def translate_manila_exception(method):"},{"line_number":230,"context_line":"    \"\"\"Transforms a manila exception but keeps its traceback intact.\"\"\""},{"line_number":231,"context_line":"    @functools.wraps(method)"},{"line_number":232,"context_line":"    def wrapper(self, ctx, *args, **kwargs):"},{"line_number":233,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"ebb68e81_428e287b","line":230,"updated":"2022-08-26 08:44:46.000000000","message":"I would use the modern \"raise from\" for this\n\n[1] https://docs.python.org/3/tutorial/errors.html#exception-chaining","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d85bb67e5c4f427ff733e52cb242f7763dfba74e","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"def translate_manila_exception(method):"},{"line_number":230,"context_line":"    \"\"\"Transforms a manila exception but keeps its traceback intact.\"\"\""},{"line_number":231,"context_line":"    @functools.wraps(method)"},{"line_number":232,"context_line":"    def wrapper(self, ctx, *args, **kwargs):"},{"line_number":233,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"5ebc4c48_9c3b4626","line":230,"in_reply_to":"ebb68e81_428e287b","updated":"2022-09-06 16:05:52.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        :param context: the nova request context"},{"line_number":289,"context_line":"        :param share_id: the id of the share to get"},{"line_number":290,"context_line":"        :param microversion: optional string microversion value"},{"line_number":291,"context_line":"        :raises: UnsupportedManilaAPIVersion if the specified microversion is"},{"line_number":292,"context_line":"        :raises: ShareNotFound if the share_id specified is not available."},{"line_number":293,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"9ea3c6ba_aced352c","line":290,"updated":"2022-08-26 08:44:46.000000000","message":"could you please define what is returned?","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d85bb67e5c4f427ff733e52cb242f7763dfba74e","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        :param context: the nova request context"},{"line_number":289,"context_line":"        :param share_id: the id of the share to get"},{"line_number":290,"context_line":"        :param microversion: optional string microversion value"},{"line_number":291,"context_line":"        :raises: UnsupportedManilaAPIVersion if the specified microversion is"},{"line_number":292,"context_line":"        :raises: ShareNotFound if the share_id specified is not available."},{"line_number":293,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"6ed4ad5b_a0d392c4","line":290,"in_reply_to":"9ea3c6ba_aced352c","updated":"2022-09-06 16:05:52.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":297,"context_line":"            for export_location in export_locations:"},{"line_number":298,"context_line":"                if export_location.preferred:"},{"line_number":299,"context_line":"                    return export_location.path"},{"line_number":300,"context_line":"            return export_locations[0].path"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"},{"line_number":303,"context_line":"        client \u003d manilaclient(context, microversion\u003dmicroversion)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7e1fb054_c70b6e86","line":300,"updated":"2022-08-26 08:44:46.000000000","message":"this cause IndexError if export_locations is []. I quick look at the API ref the example there has [] as export location so this seems like valid return from the API.","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d85bb67e5c4f427ff733e52cb242f7763dfba74e","unresolved":false,"context_lines":[{"line_number":297,"context_line":"            for export_location in export_locations:"},{"line_number":298,"context_line":"                if export_location.preferred:"},{"line_number":299,"context_line":"                    return export_location.path"},{"line_number":300,"context_line":"            return export_locations[0].path"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"},{"line_number":303,"context_line":"        client \u003d manilaclient(context, microversion\u003dmicroversion)"}],"source_content_type":"text/x-python","patch_set":12,"id":"edcc4b2f_7cc0a07d","line":300,"in_reply_to":"7e1fb054_c70b6e86","updated":"2022-09-06 16:05:52.000000000","message":"Hum, I don\u0027t think we can have an empty list here because a share should always have an export location to be mounted.\nAnyway, I add a test to deal with this case.","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":299,"context_line":"                    return export_location.path"},{"line_number":300,"context_line":"            return export_locations[0].path"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"},{"line_number":303,"context_line":"        client \u003d manilaclient(context, microversion\u003dmicroversion)"},{"line_number":304,"context_line":"        share \u003d client.shares.get(share_id)"},{"line_number":305,"context_line":"        export_locations \u003d client.share_export_locations.list(share_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7742ca63_e9026b8a","line":302,"updated":"2022-08-26 08:44:46.000000000","message":"I would move this to after the client call and let it print what we asked for and what we got. That would increase the usefulness of the log","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d85bb67e5c4f427ff733e52cb242f7763dfba74e","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                    return export_location.path"},{"line_number":300,"context_line":"            return export_locations[0].path"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"},{"line_number":303,"context_line":"        client \u003d manilaclient(context, microversion\u003dmicroversion)"},{"line_number":304,"context_line":"        share \u003d client.shares.get(share_id)"},{"line_number":305,"context_line":"        export_locations \u003d client.share_export_locations.list(share_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"96f3c3cd_f32dbdb1","line":302,"in_reply_to":"7742ca63_e9026b8a","updated":"2022-09-06 16:05:52.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":308,"context_line":"        return _untranslate_share_summary_view(context, share, export_location)"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    @translate_share_exception"},{"line_number":311,"context_line":"    def get_access_id(self, context,"},{"line_number":312,"context_line":"                    share_id,"},{"line_number":313,"context_line":"                    access_type,"},{"line_number":314,"context_line":"                    access_to,"}],"source_content_type":"text/x-python","patch_set":12,"id":"30fb41d0_797571ff","line":311,"range":{"start_line":311,"start_character":21,"end_line":311,"end_character":23},"updated":"2022-08-26 08:44:46.000000000","message":"I would wrap the line here","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        return _untranslate_share_summary_view(context, share, export_location)"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    @translate_share_exception"},{"line_number":311,"context_line":"    def get_access_id(self, context,"},{"line_number":312,"context_line":"                    share_id,"},{"line_number":313,"context_line":"                    access_type,"},{"line_number":314,"context_line":"                    access_to,"}],"source_content_type":"text/x-python","patch_set":12,"id":"5780745f_6b4a83cf","line":311,"range":{"start_line":311,"start_character":21,"end_line":311,"end_character":23},"in_reply_to":"30fb41d0_797571ff","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":313,"context_line":"                    access_type,"},{"line_number":314,"context_line":"                    access_to,"},{"line_number":315,"context_line":"                    microversion\u003dNone):"},{"line_number":316,"context_line":"        \"\"\"Get share access list"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        :param context: the nova request context"},{"line_number":319,"context_line":"        :param share_id: the id of the share to get"}],"source_content_type":"text/x-python","patch_set":12,"id":"33d2035e_207705aa","line":316,"range":{"start_line":316,"start_character":11,"end_line":316,"end_character":32},"updated":"2022-08-26 08:44:46.000000000","message":"The name of the function does not match with this doc. Does it return a list or a single id?","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d85bb67e5c4f427ff733e52cb242f7763dfba74e","unresolved":false,"context_lines":[{"line_number":313,"context_line":"                    access_type,"},{"line_number":314,"context_line":"                    access_to,"},{"line_number":315,"context_line":"                    microversion\u003dNone):"},{"line_number":316,"context_line":"        \"\"\"Get share access list"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        :param context: the nova request context"},{"line_number":319,"context_line":"        :param share_id: the id of the share to get"}],"source_content_type":"text/x-python","patch_set":12,"id":"9d507fda_dd4920ae","line":316,"range":{"start_line":316,"start_character":11,"end_line":316,"end_character":32},"in_reply_to":"33d2035e_207705aa","updated":"2022-09-06 16:05:52.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":319,"context_line":"        :param share_id: the id of the share to get"},{"line_number":320,"context_line":"        :param access_type: the type of access (\"ip\", \"cert\", \"user\")"},{"line_number":321,"context_line":"        :param access_to: ip:cidr or cert:cn or user:group or user name"},{"line_number":322,"context_line":"        :param microversion: optional string microversion value"},{"line_number":323,"context_line":"        :raises: UnsupportedManilaAPIVersion if the specified microversion is"},{"line_number":324,"context_line":"        :raises: ShareNotFound if the share_id specified is not available."},{"line_number":325,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"c7e80b8a_7c75b330","line":322,"updated":"2022-08-26 08:44:46.000000000","message":"please define what is returned","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d85bb67e5c4f427ff733e52cb242f7763dfba74e","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        :param share_id: the id of the share to get"},{"line_number":320,"context_line":"        :param access_type: the type of access (\"ip\", \"cert\", \"user\")"},{"line_number":321,"context_line":"        :param access_to: ip:cidr or cert:cn or user:group or user name"},{"line_number":322,"context_line":"        :param microversion: optional string microversion value"},{"line_number":323,"context_line":"        :raises: UnsupportedManilaAPIVersion if the specified microversion is"},{"line_number":324,"context_line":"        :raises: ShareNotFound if the share_id specified is not available."},{"line_number":325,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"944857a5_a0d1e432","line":322,"in_reply_to":"c7e80b8a_7c75b330","updated":"2022-09-06 16:05:52.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":332,"context_line":"        ).share_access_rules.access_list(share_id)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        for access in access_list:"},{"line_number":335,"context_line":"            if access.access_type \u003d\u003d access_type \\"},{"line_number":336,"context_line":"                    and access.access_to \u003d\u003d access_to:"},{"line_number":337,"context_line":"                return _untranslate_access(context, access)"},{"line_number":338,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":12,"id":"c6bc8283_0661a088","line":335,"updated":"2022-08-26 08:44:46.000000000","message":"I would format this without backslash\n        for access in access_list:\n            if (\n                access.access_type \u003d\u003d access_type and\n                access.access_to \u003d\u003d access_to\n            ):\n                return _untranslate_access(context, access)\n        return None","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        ).share_access_rules.access_list(share_id)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        for access in access_list:"},{"line_number":335,"context_line":"            if access.access_type \u003d\u003d access_type \\"},{"line_number":336,"context_line":"                    and access.access_to \u003d\u003d access_to:"},{"line_number":337,"context_line":"                return _untranslate_access(context, access)"},{"line_number":338,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":12,"id":"653df767_3d72fd5f","line":335,"in_reply_to":"c6bc8283_0661a088","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":335,"context_line":"            if access.access_type \u003d\u003d access_type \\"},{"line_number":336,"context_line":"                    and access.access_to \u003d\u003d access_to:"},{"line_number":337,"context_line":"                return _untranslate_access(context, access)"},{"line_number":338,"context_line":"        return None"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    @translate_share_exception"},{"line_number":341,"context_line":"    def allow(self, context,"}],"source_content_type":"text/x-python","patch_set":12,"id":"31d6931c_1939ea4c","line":338,"updated":"2022-08-26 08:44:46.000000000","message":"in general using both exceptions and special values to signal error is discouraged as it can be confusing for the caller when to expect what.","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d85bb67e5c4f427ff733e52cb242f7763dfba74e","unresolved":false,"context_lines":[{"line_number":335,"context_line":"            if access.access_type \u003d\u003d access_type \\"},{"line_number":336,"context_line":"                    and access.access_to \u003d\u003d access_to:"},{"line_number":337,"context_line":"                return _untranslate_access(context, access)"},{"line_number":338,"context_line":"        return None"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    @translate_share_exception"},{"line_number":341,"context_line":"    def allow(self, context,"}],"source_content_type":"text/x-python","patch_set":12,"id":"2c42a733_ae8b96ce","line":338,"in_reply_to":"31d6931c_1939ea4c","updated":"2022-09-06 16:05:52.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":338,"context_line":"        return None"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    @translate_share_exception"},{"line_number":341,"context_line":"    def allow(self, context,"},{"line_number":342,"context_line":"                    share_id,"},{"line_number":343,"context_line":"                    access_type,"},{"line_number":344,"context_line":"                    access_to,"}],"source_content_type":"text/x-python","patch_set":12,"id":"937bb34c_1b88527f","line":341,"range":{"start_line":341,"start_character":13,"end_line":341,"end_character":15},"updated":"2022-08-26 08:44:46.000000000","message":"I would wrap the line here","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        return None"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    @translate_share_exception"},{"line_number":341,"context_line":"    def allow(self, context,"},{"line_number":342,"context_line":"                    share_id,"},{"line_number":343,"context_line":"                    access_type,"},{"line_number":344,"context_line":"                    access_to,"}],"source_content_type":"text/x-python","patch_set":12,"id":"e4b5259c_439466cd","line":341,"range":{"start_line":341,"start_character":13,"end_line":341,"end_character":15},"in_reply_to":"937bb34c_1b88527f","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":351,"context_line":"        :param access_type: the type of access (\"ip\", \"cert\", \"user\")"},{"line_number":352,"context_line":"        :param access_to: ip:cidr or cert:cn or user:group or user name"},{"line_number":353,"context_line":"        :param access_level: \"ro\" for read only or \"rw\" for read/write"},{"line_number":354,"context_line":"        :param microversion: optional string microversion value"},{"line_number":355,"context_line":"        :raises: UnsupportedManilaAPIVersion if the specified microversion is"},{"line_number":356,"context_line":"        :raises: ShareNotFound if the share_id specified is not available."},{"line_number":357,"context_line":"        :raises: BadRequest if the share already exists."}],"source_content_type":"text/x-python","patch_set":12,"id":"d0c7487e_e65b33d1","line":354,"updated":"2022-08-26 08:44:46.000000000","message":"please define what is returned","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d85bb67e5c4f427ff733e52cb242f7763dfba74e","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        :param access_type: the type of access (\"ip\", \"cert\", \"user\")"},{"line_number":352,"context_line":"        :param access_to: ip:cidr or cert:cn or user:group or user name"},{"line_number":353,"context_line":"        :param access_level: \"ro\" for read only or \"rw\" for read/write"},{"line_number":354,"context_line":"        :param microversion: optional string microversion value"},{"line_number":355,"context_line":"        :raises: UnsupportedManilaAPIVersion if the specified microversion is"},{"line_number":356,"context_line":"        :raises: ShareNotFound if the share_id specified is not available."},{"line_number":357,"context_line":"        :raises: BadRequest if the share already exists."}],"source_content_type":"text/x-python","patch_set":12,"id":"8eaca715_69e535d8","line":354,"in_reply_to":"d0c7487e_e65b33d1","updated":"2022-09-06 16:05:52.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":364,"context_line":"        LOG.debug(\"Allow host access to share id:\u0027%s\u0027\","},{"line_number":365,"context_line":"                share_id)"},{"line_number":366,"context_line":"        access \u003d share.allow(access_type\u003daccess_type,"},{"line_number":367,"context_line":"                    access\u003daccess_to,"},{"line_number":368,"context_line":"                    access_level\u003daccess_level)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        # A dict is return not an object"}],"source_content_type":"text/x-python","patch_set":12,"id":"5e0e84e7_028d81a3","line":367,"range":{"start_line":367,"start_character":8,"end_line":367,"end_character":20},"updated":"2022-08-26 08:44:46.000000000","message":"this is overindented","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        LOG.debug(\"Allow host access to share id:\u0027%s\u0027\","},{"line_number":365,"context_line":"                share_id)"},{"line_number":366,"context_line":"        access \u003d share.allow(access_type\u003daccess_type,"},{"line_number":367,"context_line":"                    access\u003daccess_to,"},{"line_number":368,"context_line":"                    access_level\u003daccess_level)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        # A dict is return not an object"}],"source_content_type":"text/x-python","patch_set":12,"id":"9e59e156_1645e08e","line":367,"range":{"start_line":367,"start_character":8,"end_line":367,"end_character":20},"in_reply_to":"5e0e84e7_028d81a3","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":371,"context_line":"        return access"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"    @translate_access_exception"},{"line_number":374,"context_line":"    def deny(self, context,"},{"line_number":375,"context_line":"                    share_id,"},{"line_number":376,"context_line":"                    access_type,"},{"line_number":377,"context_line":"                    access_to,"}],"source_content_type":"text/x-python","patch_set":12,"id":"4959721d_0c092260","line":374,"range":{"start_line":374,"start_character":12,"end_line":374,"end_character":13},"updated":"2022-08-26 08:44:46.000000000","message":"I would wrap the line here","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":371,"context_line":"        return access"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"    @translate_access_exception"},{"line_number":374,"context_line":"    def deny(self, context,"},{"line_number":375,"context_line":"                    share_id,"},{"line_number":376,"context_line":"                    access_type,"},{"line_number":377,"context_line":"                    access_to,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba38be48_43f2bfef","line":374,"range":{"start_line":374,"start_character":12,"end_line":374,"end_character":13},"in_reply_to":"4959721d_0c092260","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":381,"context_line":"        :param share_id: the id of the share"},{"line_number":382,"context_line":"        :param access_type: the type of access (\"ip\", \"cert\", \"user\")"},{"line_number":383,"context_line":"        :param access_to: ip:cidr or cert:cn or user:group or user name"},{"line_number":384,"context_line":"        :param microversion: optional string microversion value"},{"line_number":385,"context_line":"        :raises: UnsupportedManilaAPIVersion if the specified microversion is"},{"line_number":386,"context_line":"        :raises: AccessNotFound if the access_id specified is not available."},{"line_number":387,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"d1853631_7606d08d","line":384,"updated":"2022-08-26 08:44:46.000000000","message":"please define what is returned","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"d85bb67e5c4f427ff733e52cb242f7763dfba74e","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        :param share_id: the id of the share"},{"line_number":382,"context_line":"        :param access_type: the type of access (\"ip\", \"cert\", \"user\")"},{"line_number":383,"context_line":"        :param access_to: ip:cidr or cert:cn or user:group or user name"},{"line_number":384,"context_line":"        :param microversion: optional string microversion value"},{"line_number":385,"context_line":"        :raises: UnsupportedManilaAPIVersion if the specified microversion is"},{"line_number":386,"context_line":"        :raises: AccessNotFound if the access_id specified is not available."},{"line_number":387,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"e114106a_aec40d93","line":384,"in_reply_to":"d1853631_7606d08d","updated":"2022-09-06 16:05:52.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":391,"context_line":"            microversion\u003dmicroversion).shares.get(share_id)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        access \u003d self.get_access_id("},{"line_number":394,"context_line":"                context,"},{"line_number":395,"context_line":"                share_id,"},{"line_number":396,"context_line":"                access_type,"},{"line_number":397,"context_line":"                access_to,"}],"source_content_type":"text/x-python","patch_set":12,"id":"4f47683f_10c6d3f7","line":394,"range":{"start_line":394,"start_character":8,"end_line":394,"end_character":16},"updated":"2022-08-26 08:44:46.000000000","message":"overindented","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":391,"context_line":"            microversion\u003dmicroversion).shares.get(share_id)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        access \u003d self.get_access_id("},{"line_number":394,"context_line":"                context,"},{"line_number":395,"context_line":"                share_id,"},{"line_number":396,"context_line":"                access_type,"},{"line_number":397,"context_line":"                access_to,"}],"source_content_type":"text/x-python","patch_set":12,"id":"df9d81b0_ce700e84","line":394,"range":{"start_line":394,"start_character":8,"end_line":394,"end_character":16},"in_reply_to":"4f47683f_10c6d3f7","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"423c07bc857b39ef1d58f2e359b7943e6eeb575e","unresolved":true,"context_lines":[{"line_number":183,"context_line":"    )"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class Share():"},{"line_number":187,"context_line":"    @classmethod"},{"line_number":188,"context_line":"    def from_manila_share(cls, manila_share, export_location):"},{"line_number":189,"context_line":"        share \u003d cls()"}],"source_content_type":"text/x-python","patch_set":21,"id":"ac42d200_6ac33c19","line":186,"updated":"2022-10-18 08:30:54.000000000","message":"I don\u0027t yet understand why we are wrapping the return values with objects like this? Maybe it will become clearer soon. I guess I hope its so we have a clear testable interface between with API and the libvirt code doing the attach.\n\nIt might be nice a quick comment around why this exists here, to make sure we preserve the intent. (I will revisit this in a few patches time!)","commit_id":"539400f4ac4e6f1beb106997016c0f4d55a4ebd4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf189205b15346a1c21f0f3f56d21419e32e8ecf","unresolved":true,"context_lines":[{"line_number":183,"context_line":"    )"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class Share():"},{"line_number":187,"context_line":"    @classmethod"},{"line_number":188,"context_line":"    def from_manila_share(cls, manila_share, export_location):"},{"line_number":189,"context_line":"        share \u003d cls()"}],"source_content_type":"text/x-python","patch_set":21,"id":"6666e669_db95e61d","line":186,"in_reply_to":"6386247b_428edd84","updated":"2023-05-23 17:29:15.000000000","message":"don\u0027t use such pattern (a class object). You should rather create some module helper method that would generate an object instance every time we call it, eg.\n\n```\nclass Share():\n  def __init__(self, *args etc.):\n      \u003cdo what you need\u003e\n\ndef from_manila_share(manila_share, export_location):\n    return Share(blah, blih, bloh)\n    \n```\n\none day, we could create a shared library between Manila and Nova if we need, and then we would only need to move the object definition, not the caller.","commit_id":"539400f4ac4e6f1beb106997016c0f4d55a4ebd4"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ea218c147927f0044643a83400eb206b6dc3add","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    )"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class Share():"},{"line_number":187,"context_line":"    @classmethod"},{"line_number":188,"context_line":"    def from_manila_share(cls, manila_share, export_location):"},{"line_number":189,"context_line":"        share \u003d cls()"}],"source_content_type":"text/x-python","patch_set":21,"id":"6f895c81_68f62cf9","line":186,"in_reply_to":"6666e669_db95e61d","updated":"2023-06-01 09:37:33.000000000","message":"I agree, I have just changed it.","commit_id":"539400f4ac4e6f1beb106997016c0f4d55a4ebd4"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"81bb4b0b757cb316295510ed77eb37422a31b977","unresolved":true,"context_lines":[{"line_number":183,"context_line":"    )"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class Share():"},{"line_number":187,"context_line":"    @classmethod"},{"line_number":188,"context_line":"    def from_manila_share(cls, manila_share, export_location):"},{"line_number":189,"context_line":"        share \u003d cls()"}],"source_content_type":"text/x-python","patch_set":21,"id":"6386247b_428edd84","line":186,"in_reply_to":"ac42d200_6ac33c19","updated":"2023-01-25 15:21:49.000000000","message":"I tend to use an object instead of dict, because it is easier to know the content and can be typed as well. I also received a previous comment in that sense.","commit_id":"539400f4ac4e6f1beb106997016c0f4d55a4ebd4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"423c07bc857b39ef1d58f2e359b7943e6eeb575e","unresolved":true,"context_lines":[{"line_number":425,"context_line":"        share_id,"},{"line_number":426,"context_line":"        access_type,"},{"line_number":427,"context_line":"        access_to,"},{"line_number":428,"context_line":"        microversion\u003dNone"},{"line_number":429,"context_line":"    ):"},{"line_number":430,"context_line":"        \"\"\"Deny share access"},{"line_number":431,"context_line":"        :param context: the nova request context"}],"source_content_type":"text/x-python","patch_set":21,"id":"8268b3ee_fa8268fa","line":428,"updated":"2022-10-18 08:30:54.000000000","message":"Lets skip that microversion stuff if its not going to be used yet? With cinder, we typically try to keep micro version complexity inside the client wrapper, if possible.\n\nI would just hardcode the latest microversion you need for all of these, as a first cut?","commit_id":"539400f4ac4e6f1beb106997016c0f4d55a4ebd4"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"81bb4b0b757cb316295510ed77eb37422a31b977","unresolved":true,"context_lines":[{"line_number":425,"context_line":"        share_id,"},{"line_number":426,"context_line":"        access_type,"},{"line_number":427,"context_line":"        access_to,"},{"line_number":428,"context_line":"        microversion\u003dNone"},{"line_number":429,"context_line":"    ):"},{"line_number":430,"context_line":"        \"\"\"Deny share access"},{"line_number":431,"context_line":"        :param context: the nova request context"}],"source_content_type":"text/x-python","patch_set":21,"id":"e609ae7d_1e28c2c6","line":428,"in_reply_to":"8268b3ee_fa8268fa","updated":"2023-01-25 15:21:49.000000000","message":"This was inspired by the cinder.py file here. I kept the microversion because I thought it might be required depending on the protocol used.","commit_id":"539400f4ac4e6f1beb106997016c0f4d55a4ebd4"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"92a8fd50e99c2af13419f7cb326db01cce9bf888","unresolved":false,"context_lines":[{"line_number":425,"context_line":"        share_id,"},{"line_number":426,"context_line":"        access_type,"},{"line_number":427,"context_line":"        access_to,"},{"line_number":428,"context_line":"        microversion\u003dNone"},{"line_number":429,"context_line":"    ):"},{"line_number":430,"context_line":"        \"\"\"Deny share access"},{"line_number":431,"context_line":"        :param context: the nova request context"}],"source_content_type":"text/x-python","patch_set":21,"id":"90c6f32d_761a301b","line":428,"in_reply_to":"e609ae7d_1e28c2c6","updated":"2023-11-21 14:28:10.000000000","message":"Done","commit_id":"539400f4ac4e6f1beb106997016c0f4d55a4ebd4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf189205b15346a1c21f0f3f56d21419e32e8ecf","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from keystoneauth1 import exceptions as keystone_exception"},{"line_number":20,"context_line":"from keystoneauth1 import loading as ks_loading"},{"line_number":21,"context_line":"from manilaclient import client as manila_client"},{"line_number":22,"context_line":"from manilaclient import exceptions as manila_exception"},{"line_number":23,"context_line":"from oslo_log import log as logging"},{"line_number":24,"context_line":"from oslo_utils import encodeutils"}],"source_content_type":"text/x-python","patch_set":33,"id":"172217bb_382674a4","line":21,"updated":"2023-05-23 17:29:15.000000000","message":"doh, but unfortunately, AFAIK, the SDK doesn\u0027t support manila yet, right?","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ea218c147927f0044643a83400eb206b6dc3add","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from keystoneauth1 import exceptions as keystone_exception"},{"line_number":20,"context_line":"from keystoneauth1 import loading as ks_loading"},{"line_number":21,"context_line":"from manilaclient import client as manila_client"},{"line_number":22,"context_line":"from manilaclient import exceptions as manila_exception"},{"line_number":23,"context_line":"from oslo_log import log as logging"},{"line_number":24,"context_line":"from oslo_utils import encodeutils"}],"source_content_type":"text/x-python","patch_set":33,"id":"f1285dcc_4f3e905e","line":21,"in_reply_to":"172217bb_382674a4","updated":"2023-06-01 09:37:33.000000000","message":"At the time I examined the SDK, I found that it only offered partial support for Manila. Some methods, such as deny and allow, were not yet implemented. Due to this limitation, I had to utilize the client instead.\n\nSince we will be incorporating the lock share mechanism using the API developed by Goutham, I prefer to wait and assess the SDK once it is fully prepared. This will allow me to utilize the SDK instead of the client.","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"92a8fd50e99c2af13419f7cb326db01cce9bf888","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from keystoneauth1 import exceptions as keystone_exception"},{"line_number":20,"context_line":"from keystoneauth1 import loading as ks_loading"},{"line_number":21,"context_line":"from manilaclient import client as manila_client"},{"line_number":22,"context_line":"from manilaclient import exceptions as manila_exception"},{"line_number":23,"context_line":"from oslo_log import log as logging"},{"line_number":24,"context_line":"from oslo_utils import encodeutils"}],"source_content_type":"text/x-python","patch_set":33,"id":"9428b8b9_12d13ab3","line":21,"in_reply_to":"f1285dcc_4f3e905e","updated":"2023-11-21 14:28:10.000000000","message":"Done","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf189205b15346a1c21f0f3f56d21419e32e8ecf","unresolved":true,"context_lines":[{"line_number":138,"context_line":"    version \u003d manila_client.api_versions.APIVersion(\u00272.69\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    if not manila_client.api_versions.check_version_supported(version):"},{"line_number":141,"context_line":"        raise exception.UnsupportedManilaAPIVersion(version\u003dversion)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    # Start a version 2.69 client to check version available on server."},{"line_number":144,"context_line":"    client \u003d manila_client.Client("}],"source_content_type":"text/x-python","patch_set":33,"id":"b3c4406d_93f079cc","line":141,"updated":"2023-05-23 17:29:15.000000000","message":"are we sure we raise that exception at compute restart ? I\u0027d prefer to load the client at the init time, and not waiting for this client to be lazyloaded then.","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    version \u003d manila_client.api_versions.APIVersion(\u00272.69\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    if not manila_client.api_versions.check_version_supported(version):"},{"line_number":141,"context_line":"        raise exception.UnsupportedManilaAPIVersion(version\u003dversion)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    # Start a version 2.69 client to check version available on server."},{"line_number":144,"context_line":"    client \u003d manila_client.Client("}],"source_content_type":"text/x-python","patch_set":33,"id":"2687181e_702097d7","line":141,"in_reply_to":"5b370007_6540ff85","updated":"2024-01-12 15:55:55.000000000","message":"Acknowledged","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ea218c147927f0044643a83400eb206b6dc3add","unresolved":true,"context_lines":[{"line_number":138,"context_line":"    version \u003d manila_client.api_versions.APIVersion(\u00272.69\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    if not manila_client.api_versions.check_version_supported(version):"},{"line_number":141,"context_line":"        raise exception.UnsupportedManilaAPIVersion(version\u003dversion)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    # Start a version 2.69 client to check version available on server."},{"line_number":144,"context_line":"    client \u003d manila_client.Client("}],"source_content_type":"text/x-python","patch_set":33,"id":"5b370007_6540ff85","line":141,"in_reply_to":"b3c4406d_93f079cc","updated":"2023-06-01 09:37:33.000000000","message":"I understand that point. If you don\u0027t mind I would like to review it when we will move to the SDK.","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf189205b15346a1c21f0f3f56d21419e32e8ecf","unresolved":true,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"class Access():"},{"line_number":210,"context_line":"    @classmethod"},{"line_number":211,"context_line":"    def from_manila_access(cls, manila_access):"},{"line_number":212,"context_line":"        access \u003d cls()"},{"line_number":213,"context_line":"        if isinstance(manila_access, dict):"}],"source_content_type":"text/x-python","patch_set":33,"id":"88b7d4b5_e71bfe9c","line":210,"updated":"2023-05-23 17:29:15.000000000","message":"ditto","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ea218c147927f0044643a83400eb206b6dc3add","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"class Access():"},{"line_number":210,"context_line":"    @classmethod"},{"line_number":211,"context_line":"    def from_manila_access(cls, manila_access):"},{"line_number":212,"context_line":"        access \u003d cls()"},{"line_number":213,"context_line":"        if isinstance(manila_access, dict):"}],"source_content_type":"text/x-python","patch_set":33,"id":"edade2db_210d9665","line":210,"in_reply_to":"88b7d4b5_e71bfe9c","updated":"2023-06-01 09:37:33.000000000","message":"Done","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf189205b15346a1c21f0f3f56d21419e32e8ecf","unresolved":true,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        client \u003d manilaclient(context, microversion\u003dmicroversion)"},{"line_number":317,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"},{"line_number":318,"context_line":"        share \u003d client.shares.get(share_id)"},{"line_number":319,"context_line":"        export_locations \u003d client.share_export_locations.list(share_id)"},{"line_number":320,"context_line":"        if export_locations:"},{"line_number":321,"context_line":"            export_location \u003d filter_export_locations(export_locations)"}],"source_content_type":"text/x-python","patch_set":33,"id":"a2b8d009_535b53b3","line":318,"updated":"2023-05-23 17:29:15.000000000","message":"note: we could do a straight GET call using the SDK","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ea218c147927f0044643a83400eb206b6dc3add","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        client \u003d manilaclient(context, microversion\u003dmicroversion)"},{"line_number":317,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"},{"line_number":318,"context_line":"        share \u003d client.shares.get(share_id)"},{"line_number":319,"context_line":"        export_locations \u003d client.share_export_locations.list(share_id)"},{"line_number":320,"context_line":"        if export_locations:"},{"line_number":321,"context_line":"            export_location \u003d filter_export_locations(export_locations)"}],"source_content_type":"text/x-python","patch_set":33,"id":"231998a2_e12070f6","line":318,"in_reply_to":"a2b8d009_535b53b3","updated":"2023-06-01 09:37:33.000000000","message":"I will change that when we will move to the SDK.","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf189205b15346a1c21f0f3f56d21419e32e8ecf","unresolved":true,"context_lines":[{"line_number":358,"context_line":"                access.access_type \u003d\u003d access_type and"},{"line_number":359,"context_line":"                access.access_to \u003d\u003d access_to"},{"line_number":360,"context_line":"            ):"},{"line_number":361,"context_line":"                return Access.from_manila_access(access)"},{"line_number":362,"context_line":"        return None"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    @translate_allow_exception"}],"source_content_type":"text/x-python","patch_set":33,"id":"795118e5_c4c71fc2","line":361,"updated":"2023-05-23 17:29:15.000000000","message":"see my comment above on the interface","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ea218c147927f0044643a83400eb206b6dc3add","unresolved":false,"context_lines":[{"line_number":358,"context_line":"                access.access_type \u003d\u003d access_type and"},{"line_number":359,"context_line":"                access.access_to \u003d\u003d access_to"},{"line_number":360,"context_line":"            ):"},{"line_number":361,"context_line":"                return Access.from_manila_access(access)"},{"line_number":362,"context_line":"        return None"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    @translate_allow_exception"}],"source_content_type":"text/x-python","patch_set":33,"id":"ce7458cf_f65d2787","line":361,"in_reply_to":"795118e5_c4c71fc2","updated":"2023-06-01 09:37:33.000000000","message":"Done","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"34685de7964396c05b59cc5fc10cf2bd3e552679","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            raise exception.ShareNotFound("},{"line_number":122,"context_line":"                share_id\u003dshare_id, reason\u003dexc) from exc"},{"line_number":123,"context_line":"        return res"},{"line_number":124,"context_line":"    return translate_sdk_exception(wrapper)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"def translate_allow_exception(method):"}],"source_content_type":"text/x-python","patch_set":38,"id":"eaf3c848_ce9aac56","line":124,"updated":"2023-11-15 13:47:49.000000000","message":"decorator chaining, nice :)","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":true,"context_lines":[{"line_number":65,"context_line":"    return Share(manila_share, export_location)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"class Access():"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def __init__(self, manila_access):"},{"line_number":71,"context_line":"        if isinstance(manila_access, dict):"}],"source_content_type":"text/x-python","patch_set":39,"id":"c5b3ce52_4fa3b07e","line":68,"updated":"2024-01-12 15:55:55.000000000","message":"nit: this could be a dataclass https://docs.python.org/3/library/dataclasses.html","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    return Share(manila_share, export_location)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"class Access():"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def __init__(self, manila_access):"},{"line_number":71,"context_line":"        if isinstance(manila_access, dict):"}],"source_content_type":"text/x-python","patch_set":39,"id":"b1d93db8_80afbf49","line":68,"in_reply_to":"c5b3ce52_4fa3b07e","updated":"2024-01-22 17:09:34.000000000","message":"Thanks, you\u0027re right; that makes sense.\nI guess it also make sens to do it for the Share class and make both of them immutable.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":true,"context_lines":[{"line_number":68,"context_line":"class Access():"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def __init__(self, manila_access):"},{"line_number":71,"context_line":"        if isinstance(manila_access, dict):"},{"line_number":72,"context_line":"            self.id \u003d manila_access[\u0027id\u0027]"},{"line_number":73,"context_line":"            self.access_level \u003d manila_access[\u0027access_level\u0027]"},{"line_number":74,"context_line":"            self.state \u003d manila_access[\u0027state\u0027]"}],"source_content_type":"text/x-python","patch_set":39,"id":"fdc9b9d2_12eec9c6","line":71,"updated":"2024-01-12 15:55:55.000000000","message":"You should just have to implement a from_dict classmethod that would hydrate some Access object based on the dict\n\nI don\u0027t really like having a init method that accepts two types for generating an object instance.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"class Access():"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def __init__(self, manila_access):"},{"line_number":71,"context_line":"        if isinstance(manila_access, dict):"},{"line_number":72,"context_line":"            self.id \u003d manila_access[\u0027id\u0027]"},{"line_number":73,"context_line":"            self.access_level \u003d manila_access[\u0027access_level\u0027]"},{"line_number":74,"context_line":"            self.state \u003d manila_access[\u0027state\u0027]"}],"source_content_type":"text/x-python","patch_set":39,"id":"29437d79_8108f179","line":71,"in_reply_to":"fdc9b9d2_12eec9c6","updated":"2024-01-22 17:09:34.000000000","message":"Acknowledged","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":true,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def from_manila_access(manila_access):"},{"line_number":88,"context_line":"    return Access(manila_access)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"def translate_sdk_exception(method):"}],"source_content_type":"text/x-python","patch_set":39,"id":"15cc4c95_ce2bc4f9","line":88,"updated":"2024-01-12 15:55:55.000000000","message":"see, if you were to do some conditional based on the variable, this should be there and then you should call .from_dict() if that\u0027s a dict.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def from_manila_access(manila_access):"},{"line_number":88,"context_line":"    return Access(manila_access)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"def translate_sdk_exception(method):"}],"source_content_type":"text/x-python","patch_set":39,"id":"6fbd3d00_366116f5","line":88,"in_reply_to":"15cc4c95_ce2bc4f9","updated":"2024-01-22 17:09:34.000000000","message":"Acknowledged","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            err_msg \u003d encodeutils.exception_to_unicode(exc)"},{"line_number":108,"context_line":"            raise exception.Forbidden(err_msg) from exc"},{"line_number":109,"context_line":"        return res"},{"line_number":110,"context_line":"    return wrapper"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"def translate_share_exception(method):"}],"source_content_type":"text/x-python","patch_set":39,"id":"17e98b50_27fb3c9e","line":110,"updated":"2024-01-12 15:55:55.000000000","message":"++","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":true,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    @translate_share_exception"},{"line_number":159,"context_line":"    def get(self, share_id):"},{"line_number":160,"context_line":"        \"\"\"Get the details about a share given it\u0027s ID."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        :param share_id: the id of the share to get"},{"line_number":163,"context_line":"        :raises: ShareNotFound if the share_id specified is not available."}],"source_content_type":"text/x-python","patch_set":39,"id":"35998585_e1084ac4","line":160,"range":{"start_line":160,"start_character":47,"end_line":160,"end_character":51},"updated":"2024-01-12 15:55:55.000000000","message":"femtonit: its","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    @translate_share_exception"},{"line_number":159,"context_line":"    def get(self, share_id):"},{"line_number":160,"context_line":"        \"\"\"Get the details about a share given it\u0027s ID."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        :param share_id: the id of the share to get"},{"line_number":163,"context_line":"        :raises: ShareNotFound if the share_id specified is not available."}],"source_content_type":"text/x-python","patch_set":39,"id":"7d03a8fe_9954f5e6","line":160,"range":{"start_line":160,"start_character":47,"end_line":160,"end_character":51},"in_reply_to":"35998585_e1084ac4","updated":"2024-01-22 17:09:34.000000000","message":"Done","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":true,"context_lines":[{"line_number":177,"context_line":"        client \u003d manilaclient()"},{"line_number":178,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"},{"line_number":179,"context_line":"        share \u003d client.get_share(share_id)"},{"line_number":180,"context_line":"        export_locations \u003d client.export_locations(share.id)"},{"line_number":181,"context_line":"        export_location \u003d filter_export_locations(export_locations)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        return from_manila_share(share, export_location)"}],"source_content_type":"text/x-python","patch_set":39,"id":"490ae606_95a279d3","line":180,"updated":"2024-01-12 15:55:55.000000000","message":"that\u0027s two HTTP roundtrips to Manila for a single share, but I guess there is no other way to populate the Share object.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":true,"context_lines":[{"line_number":177,"context_line":"        client \u003d manilaclient()"},{"line_number":178,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"},{"line_number":179,"context_line":"        share \u003d client.get_share(share_id)"},{"line_number":180,"context_line":"        export_locations \u003d client.export_locations(share.id)"},{"line_number":181,"context_line":"        export_location \u003d filter_export_locations(export_locations)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        return from_manila_share(share, export_location)"}],"source_content_type":"text/x-python","patch_set":39,"id":"732623ba_f5fc5c84","line":180,"in_reply_to":"490ae606_95a279d3","updated":"2024-01-22 17:09:34.000000000","message":"Yes, the api is designed in this way.\nThe export location is not contained in the get_share result.\nYou need another request to get it.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4725e200815ea403db73faea84d87cc990158801","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        client \u003d manilaclient()"},{"line_number":178,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"},{"line_number":179,"context_line":"        share \u003d client.get_share(share_id)"},{"line_number":180,"context_line":"        export_locations \u003d client.export_locations(share.id)"},{"line_number":181,"context_line":"        export_location \u003d filter_export_locations(export_locations)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        return from_manila_share(share, export_location)"}],"source_content_type":"text/x-python","patch_set":39,"id":"503293e3_bfdfc556","line":180,"in_reply_to":"732623ba_f5fc5c84","updated":"2024-01-30 15:24:35.000000000","message":"Acknowledged","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":true,"context_lines":[{"line_number":209,"context_line":"                access.access_to \u003d\u003d access_to"},{"line_number":210,"context_line":"            ):"},{"line_number":211,"context_line":"                return from_manila_access(access)"},{"line_number":212,"context_line":"        return None"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    @translate_allow_exception"},{"line_number":215,"context_line":"    def allow("}],"source_content_type":"text/x-python","patch_set":39,"id":"119e21af_a39be748","line":212,"updated":"2024-01-12 15:55:55.000000000","message":"open question : shall we rather raise an exception if I\u0027m not able to get access ?","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":true,"context_lines":[{"line_number":209,"context_line":"                access.access_to \u003d\u003d access_to"},{"line_number":210,"context_line":"            ):"},{"line_number":211,"context_line":"                return from_manila_access(access)"},{"line_number":212,"context_line":"        return None"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    @translate_allow_exception"},{"line_number":215,"context_line":"    def allow("}],"source_content_type":"text/x-python","patch_set":39,"id":"4d8ed4a4_8c5fa15b","line":212,"in_reply_to":"119e21af_a39be748","updated":"2024-01-22 17:09:34.000000000","message":"I think returning None respects the way it is working more.\nYou can have a share without policy applied.\nBy the way, it is a two-step process: create the share, then apply the policy.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f306d3a1e5d7a62ede47bec95dbdee0cf0accbca","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                access.access_to \u003d\u003d access_to"},{"line_number":210,"context_line":"            ):"},{"line_number":211,"context_line":"                return from_manila_access(access)"},{"line_number":212,"context_line":"        return None"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    @translate_allow_exception"},{"line_number":215,"context_line":"    def allow("}],"source_content_type":"text/x-python","patch_set":39,"id":"f114f45a_400ef4ad","line":212,"in_reply_to":"4d8ed4a4_8c5fa15b","updated":"2024-02-14 11:19:23.000000000","message":"Acknowledged","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":true,"context_lines":[{"line_number":245,"context_line":"        LOG.debug(\"Allow host access to share id:\u0027%s\u0027\","},{"line_number":246,"context_line":"                  share_id)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        access \u003d from_manila_access("},{"line_number":249,"context_line":"            manilaclient().create_access_rule("},{"line_number":250,"context_line":"                share_id,"},{"line_number":251,"context_line":"                access_type\u003daccess_type,"}],"source_content_type":"text/x-python","patch_set":39,"id":"5e6be8c2_0154d156","line":248,"updated":"2024-01-12 15:55:55.000000000","message":"I\u0027m not a big fan of encapsulating calls, particularly if I can get some exceptions that are raised by the manila client.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        LOG.debug(\"Allow host access to share id:\u0027%s\u0027\","},{"line_number":246,"context_line":"                  share_id)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        access \u003d from_manila_access("},{"line_number":249,"context_line":"            manilaclient().create_access_rule("},{"line_number":250,"context_line":"                share_id,"},{"line_number":251,"context_line":"                access_type\u003daccess_type,"}],"source_content_type":"text/x-python","patch_set":39,"id":"0d262248_64559427","line":248,"in_reply_to":"5e6be8c2_0154d156","updated":"2024-01-22 17:09:34.000000000","message":"Remove the encapsulation.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":true,"context_lines":[{"line_number":254,"context_line":"            )"},{"line_number":255,"context_line":"        )"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if not check_manila_access_response():"},{"line_number":258,"context_line":"            raise exception.ShareAccessGrantError(share_id\u003dshare_id)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        return access"}],"source_content_type":"text/x-python","patch_set":39,"id":"075c8a70_17e059fb","line":257,"range":{"start_line":257,"start_character":15,"end_line":257,"end_character":43},"updated":"2024-01-12 15:55:55.000000000","message":"this is a bit errorprone to call some internal method without passing any argument as the access object may change in between. Surely this works since the variable can be read within scope of the internal method, but I\u0027d prefer some explicit parameter definition... or actually, is this really needed to have an internal method just for the sake of a single conditional ?","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":true,"context_lines":[{"line_number":254,"context_line":"            )"},{"line_number":255,"context_line":"        )"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if not check_manila_access_response():"},{"line_number":258,"context_line":"            raise exception.ShareAccessGrantError(share_id\u003dshare_id)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        return access"}],"source_content_type":"text/x-python","patch_set":39,"id":"955a8716_05a79866","line":257,"range":{"start_line":257,"start_character":15,"end_line":257,"end_character":43},"in_reply_to":"075c8a70_17e059fb","updated":"2024-01-22 17:09:34.000000000","message":"Use a standard function instead of a closure.\nTBH, I think I wrote this check for something based on the create_access_rule answer, but I don\u0027t remember exactly why.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4725e200815ea403db73faea84d87cc990158801","unresolved":false,"context_lines":[{"line_number":254,"context_line":"            )"},{"line_number":255,"context_line":"        )"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if not check_manila_access_response():"},{"line_number":258,"context_line":"            raise exception.ShareAccessGrantError(share_id\u003dshare_id)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        return access"}],"source_content_type":"text/x-python","patch_set":39,"id":"e7b24d6c_7d87b4b3","line":257,"range":{"start_line":257,"start_character":15,"end_line":257,"end_character":43},"in_reply_to":"955a8716_05a79866","updated":"2024-01-30 15:24:35.000000000","message":"Acknowledged","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4725e200815ea403db73faea84d87cc990158801","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    :raise: ServiceUnavailable if the service is down"},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    return utils.get_sdk_adapter(\u0027shared-file-system\u0027, check_service\u003dTrue)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"@dataclass(frozen\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":40,"id":"1b0134ef_57f3ea50","line":42,"updated":"2024-01-30 15:24:35.000000000","message":"nit: you could have made it cachable, but meh.","commit_id":"bbb3115d43136d417c678ad6bde4b815f7d6404b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4725e200815ea403db73faea84d87cc990158801","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            access_to\u003dmanila_access[\u0027access_to\u0027],"},{"line_number":112,"context_line":"            access_key\u003dmanila_access[\u0027access_key\u0027],"},{"line_number":113,"context_line":"        )"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def translate_sdk_exception(method):"},{"line_number":117,"context_line":"    \"\"\"Transforms a manila exception but keeps its traceback intact.\"\"\""}],"source_content_type":"text/x-python","patch_set":40,"id":"61054b11_2e65129b","line":114,"updated":"2024-01-30 15:24:35.000000000","message":"++","commit_id":"bbb3115d43136d417c678ad6bde4b815f7d6404b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dd737e6df88d7c1e60a5194b438167be493376c4","unresolved":true,"context_lines":[{"line_number":198,"context_line":"                    return export_location.path"},{"line_number":199,"context_line":"                else:"},{"line_number":200,"context_line":"                    paths.append(export_location.path)"},{"line_number":201,"context_line":"            return paths[0]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        client \u003d manilaclient()"},{"line_number":204,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"}],"source_content_type":"text/x-python","patch_set":42,"id":"19d9395e_15d4a87a","line":201,"updated":"2024-02-14 12:47:04.000000000","message":"This would be a good addition to SDK (e.g. `get_preferred_export_location`)","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8f01f94aa9849af29ab5393b869c722a9edf35fb","unresolved":true,"context_lines":[{"line_number":198,"context_line":"                    return export_location.path"},{"line_number":199,"context_line":"                else:"},{"line_number":200,"context_line":"                    paths.append(export_location.path)"},{"line_number":201,"context_line":"            return paths[0]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        client \u003d manilaclient()"},{"line_number":204,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"}],"source_content_type":"text/x-python","patch_set":42,"id":"da3e0996_8c5e3e64","line":201,"in_reply_to":"078343fa_5f83497c","updated":"2024-02-23 10:37:09.000000000","message":"You can do that in another SDK change and provide a FUP for Nova once you\u0027re done.","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"452bf2992ad9b1982f823061457d33f2ed755d57","unresolved":true,"context_lines":[{"line_number":198,"context_line":"                    return export_location.path"},{"line_number":199,"context_line":"                else:"},{"line_number":200,"context_line":"                    paths.append(export_location.path)"},{"line_number":201,"context_line":"            return paths[0]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        client \u003d manilaclient()"},{"line_number":204,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"}],"source_content_type":"text/x-python","patch_set":42,"id":"20f95751_258f7e09","line":201,"in_reply_to":"19d9395e_15d4a87a","updated":"2024-02-14 12:47:33.000000000","message":"tbc, you don\u0027t need to do this now. It\u0027d just be nice down the line...","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"778cf19a51fdb8bac211971494b02b1384db740f","unresolved":true,"context_lines":[{"line_number":198,"context_line":"                    return export_location.path"},{"line_number":199,"context_line":"                else:"},{"line_number":200,"context_line":"                    paths.append(export_location.path)"},{"line_number":201,"context_line":"            return paths[0]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        client \u003d manilaclient()"},{"line_number":204,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"}],"source_content_type":"text/x-python","patch_set":42,"id":"078343fa_5f83497c","line":201,"in_reply_to":"20f95751_258f7e09","updated":"2024-02-16 14:09:46.000000000","message":"Oh well, putting that in the todo list.\nI will try to do it ASAP.","commit_id":"453fd78aa4f3194f8eb3963199aa2e7b0c145bd6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"@dataclass(frozen\u003dTrue)"},{"line_number":47,"context_line":"class Share():"},{"line_number":48,"context_line":"    id: str"},{"line_number":49,"context_line":"    size: int"},{"line_number":50,"context_line":"    availability_zone: Optional[str]"}],"source_content_type":"text/x-python","patch_set":43,"id":"53de86d9_c599249b","line":47,"updated":"2024-02-29 12:04:37.000000000","message":"snazzy 😎 However, why do this rather than using the SDK objects directly? The API for `openstack.resource.Resource` is stable and you\u0027re not passing these across RPC presumably (otherwise we\u0027d be using o.v.o\u0027s)","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5019fc72a40ef361a81d82ebae2c0b7ff8e811dd","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"@dataclass(frozen\u003dTrue)"},{"line_number":47,"context_line":"class Share():"},{"line_number":48,"context_line":"    id: str"},{"line_number":49,"context_line":"    size: int"},{"line_number":50,"context_line":"    availability_zone: Optional[str]"}],"source_content_type":"text/x-python","patch_set":43,"id":"4b8a52f7_b0a7d9f0","line":47,"in_reply_to":"460d3922_16d3c137","updated":"2024-05-22 08:45:04.000000000","message":"I\u0027m leaning towards Uggla\u0027s points here. While we could wrap the SDK resource and add only export_location here, that would not achieve much reduction of repetition as we would still need to declare getters for all the Share fields to keep the wrapper as a facade and hide the SDK object from the rest of nova.","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b2020a8b029da31bae6f64cb7d28d9673199554b","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"@dataclass(frozen\u003dTrue)"},{"line_number":47,"context_line":"class Share():"},{"line_number":48,"context_line":"    id: str"},{"line_number":49,"context_line":"    size: int"},{"line_number":50,"context_line":"    availability_zone: Optional[str]"}],"source_content_type":"text/x-python","patch_set":43,"id":"3adc329d_4ad03f58","line":47,"in_reply_to":"4b8a52f7_b0a7d9f0","updated":"2024-06-27 07:17:38.000000000","message":"Yeah, and eventually if we want to directly use the SDK objects, we could do this later. I don\u0027t want to hold this change by now.","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b83a55c43a810157d780d095f6f47c865af61feb","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"@dataclass(frozen\u003dTrue)"},{"line_number":47,"context_line":"class Share():"},{"line_number":48,"context_line":"    id: str"},{"line_number":49,"context_line":"    size: int"},{"line_number":50,"context_line":"    availability_zone: Optional[str]"}],"source_content_type":"text/x-python","patch_set":43,"id":"b09d78cc_ec30ebcd","line":47,"in_reply_to":"53de86d9_c599249b","updated":"2024-05-14 13:02:37.000000000","message":"@stephenfin: \n* What happens when a new microversion is published by manila? Can nova ask for a specific one and only opt-in to a new one when nova needs it? (i.e. avoiding a breaking change if a new microversion removes a field)\n\n* As we have the export_location that is not a direct field on the sdk object, and we might need these type of fields in the future. Do you suggest to always introduce these generated fields to the sdk?","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ba91a551291dcbe2a1d23b08059b4646647ca766","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"@dataclass(frozen\u003dTrue)"},{"line_number":47,"context_line":"class Share():"},{"line_number":48,"context_line":"    id: str"},{"line_number":49,"context_line":"    size: int"},{"line_number":50,"context_line":"    availability_zone: Optional[str]"}],"source_content_type":"text/x-python","patch_set":43,"id":"fd315106_2243ac30","line":47,"in_reply_to":"b09d78cc_ec30ebcd","updated":"2024-05-14 13:13:04.000000000","message":"on the latter, could we simply warp the SDK object and introduce export_location (or other new nova specific aggregate fields) there without redefining the common fields?","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"477dd6a1e979028ea7e82e50ba7e980f768a13cb","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"@dataclass(frozen\u003dTrue)"},{"line_number":47,"context_line":"class Share():"},{"line_number":48,"context_line":"    id: str"},{"line_number":49,"context_line":"    size: int"},{"line_number":50,"context_line":"    availability_zone: Optional[str]"}],"source_content_type":"text/x-python","patch_set":43,"id":"460d3922_16d3c137","line":47,"in_reply_to":"f4dfc32e_8e0c718c","updated":"2024-05-15 16:27:53.000000000","message":"I do not have a strong opinion, but I would keep our object here as I see more benefits.\n1) I don\u0027t need to rework the code once again. 😊\n2) It keeps the dependency on the SDK only in this file.\n3) It easily allows the addition of \"custom\" fields.\n4) The object is immutable (frozen).\n5) I don\u0027t see what a wrapper would add here. I may miss something.\n\nPlease let me know if you agree or not.","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"77bd1ebe54ced043e276ff3a9e199e344f5e0bdb","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"@dataclass(frozen\u003dTrue)"},{"line_number":47,"context_line":"class Share():"},{"line_number":48,"context_line":"    id: str"},{"line_number":49,"context_line":"    size: int"},{"line_number":50,"context_line":"    availability_zone: Optional[str]"}],"source_content_type":"text/x-python","patch_set":43,"id":"f4dfc32e_8e0c718c","line":47,"in_reply_to":"fd315106_2243ac30","updated":"2024-05-14 14:55:22.000000000","message":"\u003e * What happens when a new microversion is published by manila? Can nova ask for a specific one and only opt-in to a new one when nova needs it? (i.e. avoiding a breaking change if a new microversion removes a field)\n\nSDK won\u0027t ever remove a field so you just need to make sure you are explicitly requesting a microversion for each request. You can do this for many (but not all) proxy methods by passing the `microversion` argument.\n\n```\nimport openstack\nconn \u003d openstack.connect()\nconn.compute.servers(microversion\u003d\u00272.3\u0027)\n```\n\nYou can also do it by configuring the API version when creating the Connection, either by setting the relevant field (e.g. `compute_api_version` in `clouds.yaml`) or by passing said field directly to the `connect` call.\n\n```\nimport openstack\nconn \u003d openstack.connect(compute_api_version\u003d\u00272.3\u0027)\nconn.compute.servers()\n```\n\nWe need to make sure we\u0027re doing one of these for our Manila calls.\n\n\u003e * As we have the export_location that is not a direct field on the sdk object, and we might need these type of fields in the future. Do you suggest to always introduce these generated fields to the sdk?\n\nAhh, I missed that. SDK doesn\u0027t really support extending objects and I\u0027m not sure what happens if you attempt e.g.\n\n```\nserver \u003d conn.compute.find_server(\u0027foo\u0027)\nserver._foobar \u003d 123\n```\n\nYou could subclass the object (inheritance) but if you do that then you\u0027re subject to e.g. API breaks. It\u0027s also a bit fake since these are not real API fields. I think composition would be a better option, as you\u0027ve suggested.","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":true,"context_lines":[{"line_number":62,"context_line":"    is_public: bool"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    @classmethod"},{"line_number":65,"context_line":"    def from_manila_share(cls, manila_share, export_location):"},{"line_number":66,"context_line":"        return cls("},{"line_number":67,"context_line":"            id\u003dmanila_share.id,"},{"line_number":68,"context_line":"            size\u003dmanila_share.size,"}],"source_content_type":"text/x-python","patch_set":43,"id":"11198f6f_d825c2aa","line":65,"updated":"2024-02-29 12:04:37.000000000","message":"nit:\n\n```\nfrom openstack.shared_file_system.v2 import share\nfrom openstack.shared_file_system.v2 import share_export_locations\n\n...\n\n@classmethod\ndef from_manila_share(\n    cls,\n    manila_share: share.Share,\n    export_location: share_export_locations.ShareExportLocation,\n):\n    ...\n```","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a94bd9dd765bdb229254788e383df17d7ec1d8e3","unresolved":true,"context_lines":[{"line_number":62,"context_line":"    is_public: bool"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    @classmethod"},{"line_number":65,"context_line":"    def from_manila_share(cls, manila_share, export_location):"},{"line_number":66,"context_line":"        return cls("},{"line_number":67,"context_line":"            id\u003dmanila_share.id,"},{"line_number":68,"context_line":"            size\u003dmanila_share.size,"}],"source_content_type":"text/x-python","patch_set":43,"id":"23adc891_b0dba59b","line":65,"in_reply_to":"11198f6f_d825c2aa","updated":"2024-06-12 13:59:58.000000000","message":"stephenfin : are those SDK objects part of the public SDK API ?\nI\u0027m quite like gibi and Uggla here","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":true,"context_lines":[{"line_number":92,"context_line":"    access_key: Optional[str]"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @classmethod"},{"line_number":95,"context_line":"    def from_manila_access(cls, manila_access):"},{"line_number":96,"context_line":"        return cls("},{"line_number":97,"context_line":"            id\u003dmanila_access.id,"},{"line_number":98,"context_line":"            access_level\u003dmanila_access.access_level,"}],"source_content_type":"text/x-python","patch_set":43,"id":"55ea169b_7c94f4de","line":95,"updated":"2024-02-29 12:04:37.000000000","message":"nit:\n\n```\nfrom openstack.shared_file_system.v2 import share_access_rule\n\n...\n\n@classmethod\ndef from_manila_access(\n    cls, manila_access: share_access_rule.ShareAccessRule,\n):\n    ...\n```","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":true,"context_lines":[{"line_number":122,"context_line":"            res \u003d method(self, *args, **kwargs)"},{"line_number":123,"context_line":"        except (sdk_exc.SDKException,"},{"line_number":124,"context_line":"                keystone_exception.ConnectionError) as exc:"},{"line_number":125,"context_line":"            err_msg \u003d encodeutils.exception_to_unicode(exc)"},{"line_number":126,"context_line":"            raise exception.ManilaConnectionFailed(reason\u003derr_msg) from exc"},{"line_number":127,"context_line":"        except (keystone_exception.BadRequest,"},{"line_number":128,"context_line":"                sdk_exc.BadRequestException) as exc:"}],"source_content_type":"text/x-python","patch_set":43,"id":"ab20c128_8fa3eb36","line":125,"updated":"2024-02-29 12:04:37.000000000","message":"nit: Everything is unicode in Python 3 so this shouldn\u0027t be necessary now. We can just do:\n\n```\nerr_msg \u003d str(exc)\n```\n\nor use `str(exc)` directly instead of `err_msg`.\n\nIf you look at `oslo_utils.encodeutils.exception_to_unicode` you\u0027ll see this is what is happening.","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"477dd6a1e979028ea7e82e50ba7e980f768a13cb","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            res \u003d method(self, *args, **kwargs)"},{"line_number":123,"context_line":"        except (sdk_exc.SDKException,"},{"line_number":124,"context_line":"                keystone_exception.ConnectionError) as exc:"},{"line_number":125,"context_line":"            err_msg \u003d encodeutils.exception_to_unicode(exc)"},{"line_number":126,"context_line":"            raise exception.ManilaConnectionFailed(reason\u003derr_msg) from exc"},{"line_number":127,"context_line":"        except (keystone_exception.BadRequest,"},{"line_number":128,"context_line":"                sdk_exc.BadRequestException) as exc:"}],"source_content_type":"text/x-python","patch_set":43,"id":"d0221597_57f457a3","line":125,"in_reply_to":"ab20c128_8fa3eb36","updated":"2024-05-15 16:27:53.000000000","message":"Done","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":true,"context_lines":[{"line_number":143,"context_line":"    def wrapper(self, share_id, *args, **kwargs):"},{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            res \u003d method(self, share_id, *args, **kwargs)"},{"line_number":146,"context_line":"        except (keystone_exception.NotFound, sdk_exc.ResourceNotFound) as exc:"},{"line_number":147,"context_line":"            raise exception.ShareNotFound("},{"line_number":148,"context_line":"                share_id\u003dshare_id, reason\u003dexc) from exc"},{"line_number":149,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":43,"id":"7bfd223c_53fa4c61","line":146,"range":{"start_line":146,"start_character":16,"end_line":146,"end_character":45},"updated":"2024-02-29 12:04:37.000000000","message":"What raises this? We shouldn\u0027t be letting this bubble up from SDK. If we do, that\u0027s probably a bug.","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"477dd6a1e979028ea7e82e50ba7e980f768a13cb","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    def wrapper(self, share_id, *args, **kwargs):"},{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            res \u003d method(self, share_id, *args, **kwargs)"},{"line_number":146,"context_line":"        except (keystone_exception.NotFound, sdk_exc.ResourceNotFound) as exc:"},{"line_number":147,"context_line":"            raise exception.ShareNotFound("},{"line_number":148,"context_line":"                share_id\u003dshare_id, reason\u003dexc) from exc"},{"line_number":149,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":43,"id":"482372dc_19ac93a7","line":146,"range":{"start_line":146,"start_character":16,"end_line":146,"end_character":45},"in_reply_to":"7bfd223c_53fa4c61","updated":"2024-05-15 16:27:53.000000000","message":"Done","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        \"\"\""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        LOG.debug(\"Get share access id for share id:\u0027%s\u0027\","},{"line_number":229,"context_line":"                  share_id)"},{"line_number":230,"context_line":"        access_list \u003d manilaclient().access_rules(share_id)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        for access in access_list:"}],"source_content_type":"text/x-python","patch_set":43,"id":"03d11bc6_890e56ed","line":229,"updated":"2024-02-29 12:04:37.000000000","message":"nit: can fit on one line","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            if ("},{"line_number":234,"context_line":"                access.access_type \u003d\u003d access_type and"},{"line_number":235,"context_line":"                access.access_to \u003d\u003d access_to"},{"line_number":236,"context_line":"            ):"},{"line_number":237,"context_line":"                return Access.from_manila_access(access)"},{"line_number":238,"context_line":"        return None"},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"99a03708_30a131ff","line":236,"updated":"2024-02-29 12:04:37.000000000","message":"nit: really feels like something the Manila API should let you do. A potential future microversion for those folks.","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                raise exception.ShareAccessGrantError(share_id\u003dshare_id)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        LOG.debug(\"Allow host access to share id:\u0027%s\u0027\","},{"line_number":270,"context_line":"                  share_id)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        access \u003d manilaclient().create_access_rule("},{"line_number":273,"context_line":"            share_id,"}],"source_content_type":"text/x-python","patch_set":43,"id":"63ce7179_5bf6cc5d","line":270,"updated":"2024-02-29 12:04:37.000000000","message":"nit: one line","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":true,"context_lines":[{"line_number":279,"context_line":"        )"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        access \u003d Access.from_manila_access(access)"},{"line_number":282,"context_line":"        check_manila_access_response(access)"},{"line_number":283,"context_line":"        return access"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    @translate_deny_exception"}],"source_content_type":"text/x-python","patch_set":43,"id":"de5eef61_db58b05a","line":282,"updated":"2024-02-29 12:04:37.000000000","message":"Does this work? The [API docs](https://docs.openstack.org/api-ref/shared-file-system/index.html#grant-access) say this returns a HTTP 202 so I\u0027d expect to have to fetch the access rule (by ID) again to verify things?","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0a21c9fc414811c4ee6638e8ace2a79d107b04d8","unresolved":true,"context_lines":[{"line_number":279,"context_line":"        )"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        access \u003d Access.from_manila_access(access)"},{"line_number":282,"context_line":"        check_manila_access_response(access)"},{"line_number":283,"context_line":"        return access"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    @translate_deny_exception"}],"source_content_type":"text/x-python","patch_set":43,"id":"6371cdc1_1e2b0a52","line":282,"in_reply_to":"3578208a_ccd8fd13","updated":"2024-05-22 12:24:10.000000000","message":"I think it works as the upper layers does a retry. https://review.opendev.org/c/openstack/nova/+/833090/47/nova/compute/manager.py#4641","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"99ab906b3272180ae3b91002afa36d9ace653e88","unresolved":true,"context_lines":[{"line_number":279,"context_line":"        )"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        access \u003d Access.from_manila_access(access)"},{"line_number":282,"context_line":"        check_manila_access_response(access)"},{"line_number":283,"context_line":"        return access"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    @translate_deny_exception"}],"source_content_type":"text/x-python","patch_set":43,"id":"323835f2_4aed751d","line":282,"in_reply_to":"6371cdc1_1e2b0a52","updated":"2024-05-22 17:38:26.000000000","message":"\u003e The SDK create_access_rules() returns an object https://opendev.org/openstack/openstacksdk/src/commit/0d5d48f65f3eae30f940504d319ea3515608a238/openstack/shared_file_system/v2/_proxy.py#L863\n\nBut is the object populated? It could be an empty object with only the ID field populated.\n\n\u003e I think it works as the upper layers does a retry. https://review.opendev.org/c/openstack/nova/+/833090/47/nova/compute/manager.py#4641\n\nIf so (and if what I say about the HTTP 202 is correct), we should probably return `None` from here since it would be misleading.","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"477dd6a1e979028ea7e82e50ba7e980f768a13cb","unresolved":true,"context_lines":[{"line_number":279,"context_line":"        )"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        access \u003d Access.from_manila_access(access)"},{"line_number":282,"context_line":"        check_manila_access_response(access)"},{"line_number":283,"context_line":"        return access"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    @translate_deny_exception"}],"source_content_type":"text/x-python","patch_set":43,"id":"3578208a_ccd8fd13","line":282,"in_reply_to":"de5eef61_db58b05a","updated":"2024-05-15 16:27:53.000000000","message":"The SDK create_access_rules() returns an object https://opendev.org/openstack/openstacksdk/src/commit/0d5d48f65f3eae30f940504d319ea3515608a238/openstack/shared_file_system/v2/_proxy.py#L863\n\nI have tested with devstack and it is working as expected afaik.","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":true,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        if access:"},{"line_number":311,"context_line":"            LOG.debug(\"Deny host access to share id:\u0027%s\u0027\", share_id)"},{"line_number":312,"context_line":"            resp \u003d client.delete_access_rule(access.id, share_id)"},{"line_number":313,"context_line":"            if resp.status_code !\u003d 202:"},{"line_number":314,"context_line":"                raise exception.ShareAccessRemovalError("},{"line_number":315,"context_line":"                    share_id\u003dshare_id, reason\u003dresp.reason"}],"source_content_type":"text/x-python","patch_set":43,"id":"c0dca3a2_631a582d","line":312,"updated":"2024-02-29 12:04:37.000000000","message":"Again, does this work? We call `_translate_response` in `openstack.resource.Resource.delete` (which is used by `openstack.shared_file_system.v2._proxy.Proxy.delete_access_rule`) so any not HTTP 2xx/3xx codes _should_ result in an error? No?","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0a21c9fc414811c4ee6638e8ace2a79d107b04d8","unresolved":true,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        if access:"},{"line_number":311,"context_line":"            LOG.debug(\"Deny host access to share id:\u0027%s\u0027\", share_id)"},{"line_number":312,"context_line":"            resp \u003d client.delete_access_rule(access.id, share_id)"},{"line_number":313,"context_line":"            if resp.status_code !\u003d 202:"},{"line_number":314,"context_line":"                raise exception.ShareAccessRemovalError("},{"line_number":315,"context_line":"                    share_id\u003dshare_id, reason\u003dresp.reason"}],"source_content_type":"text/x-python","patch_set":43,"id":"bd5a7f3d_0fc993d5","line":312,"in_reply_to":"10a6372b_65acbe62","updated":"2024-05-22 12:24:10.000000000","message":"@Stephen, do you mean checking !\u003d 202 below does not make sense as any error already raised as an exception by the client?","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"99ab906b3272180ae3b91002afa36d9ace653e88","unresolved":true,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        if access:"},{"line_number":311,"context_line":"            LOG.debug(\"Deny host access to share id:\u0027%s\u0027\", share_id)"},{"line_number":312,"context_line":"            resp \u003d client.delete_access_rule(access.id, share_id)"},{"line_number":313,"context_line":"            if resp.status_code !\u003d 202:"},{"line_number":314,"context_line":"                raise exception.ShareAccessRemovalError("},{"line_number":315,"context_line":"                    share_id\u003dshare_id, reason\u003dresp.reason"}],"source_content_type":"text/x-python","patch_set":43,"id":"c5718cb1_e80abdce","line":312,"in_reply_to":"bd5a7f3d_0fc993d5","updated":"2024-05-22 17:38:26.000000000","message":"\u003e @Stephen, do you mean checking !\u003d 202 below does not make sense as any error already raised as an exception by the client?\n\n\nYes, assuming the only success status code is 202 then this should be a no-op since sdk should raise an exception for all HTTP 4xx or HTTP 5xx errors. Assuming this is the case, I\u0027d expect to see something more like this:\n\n```\ntry:\n    resp \u003d client.delete_access_rule(access.id, share_id)\nexcept sdk_exceptions.NotFoundException:\n    raise exception.ShareAccessNotFound(share_id\u003dshare_id)\nexcept sdk_exceptions.HttpException:\n    raise exception.ShareAccessRemovalError(\n        share_id\u003dshare_id, reason\u003dstr(exc)\n    )\n```\n\nIf this *isn\u0027t* the case, it\u0027s a bug against SDK that should be fixed.","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"477dd6a1e979028ea7e82e50ba7e980f768a13cb","unresolved":true,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        if access:"},{"line_number":311,"context_line":"            LOG.debug(\"Deny host access to share id:\u0027%s\u0027\", share_id)"},{"line_number":312,"context_line":"            resp \u003d client.delete_access_rule(access.id, share_id)"},{"line_number":313,"context_line":"            if resp.status_code !\u003d 202:"},{"line_number":314,"context_line":"                raise exception.ShareAccessRemovalError("},{"line_number":315,"context_line":"                    share_id\u003dshare_id, reason\u003dresp.reason"}],"source_content_type":"text/x-python","patch_set":43,"id":"10a6372b_65acbe62","line":312,"in_reply_to":"c0dca3a2_631a582d","updated":"2024-05-15 16:27:53.000000000","message":"delete_access_rule() returns a http response: https://opendev.org/openstack/openstacksdk/src/commit/0d5d48f65f3eae30f940504d319ea3515608a238/openstack/shared_file_system/v2/_proxy.py#L880\n\nI have tested with devstack and it is working as expected afaik.","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0a21c9fc414811c4ee6638e8ace2a79d107b04d8","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":46,"id":"a4a7e59c_be36c469","updated":"2024-05-22 12:24:10.000000000","message":"stephenfin had a good point that we should set a manila microversion for the API calls explicitly to avoid automatically opting into newer microversions that might break us. I\u0027m fine using either the current manila maximum microversion or the one that introduced the last change needed for the nova feature to work (lock?)","commit_id":"8631c0b95db485b52b0a48a7f0a57b5d84c2dae4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a0104dbe7570f562ef12b141e9df99c0d50efac7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":46,"id":"218a8e0f_df82b08d","in_reply_to":"a4a7e59c_be36c469","updated":"2024-06-04 09:30:58.000000000","message":"I see it is done now by passing the microversion to the get_sdk_adapter call","commit_id":"8631c0b95db485b52b0a48a7f0a57b5d84c2dae4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ec701dffd4e74b1b22d6bbcc493faa6e57df85c8","unresolved":true,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        client \u003d manilaclient()"},{"line_number":197,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"},{"line_number":198,"context_line":"        share \u003d client.get_share(share_id)"},{"line_number":199,"context_line":"        export_locations \u003d client.export_locations(share.id)"},{"line_number":200,"context_line":"        export_location \u003d filter_export_locations(export_locations)"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":46,"id":"0a27cee2_7e981501","line":198,"updated":"2024-05-30 12:48:05.000000000","message":"lets try to pass microversion as positional arg here and below `microversion\u003d`","commit_id":"8631c0b95db485b52b0a48a7f0a57b5d84c2dae4"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"46e9af927f16eff06806528a2250bb84114eb2c6","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        client \u003d manilaclient()"},{"line_number":197,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"},{"line_number":198,"context_line":"        share \u003d client.get_share(share_id)"},{"line_number":199,"context_line":"        export_locations \u003d client.export_locations(share.id)"},{"line_number":200,"context_line":"        export_location \u003d filter_export_locations(export_locations)"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":46,"id":"83a4e32c_32e324bb","line":198,"in_reply_to":"0a27cee2_7e981501","updated":"2024-06-05 12:48:31.000000000","message":"Done","commit_id":"8631c0b95db485b52b0a48a7f0a57b5d84c2dae4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a0104dbe7570f562ef12b141e9df99c0d50efac7","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        client \u003d manilaclient()"},{"line_number":197,"context_line":"        LOG.debug(\"Get share id:\u0027%s\u0027 data from manila\", share_id)"},{"line_number":198,"context_line":"        share \u003d client.get_share(share_id)"},{"line_number":199,"context_line":"        export_locations \u003d client.export_locations(share.id)"},{"line_number":200,"context_line":"        export_location \u003d filter_export_locations(export_locations)"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":46,"id":"87ae4139_30f6243a","line":198,"in_reply_to":"0a27cee2_7e981501","updated":"2024-06-04 09:30:58.000000000","message":"Done in the adapter creation","commit_id":"8631c0b95db485b52b0a48a7f0a57b5d84c2dae4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a94bd9dd765bdb229254788e383df17d7ec1d8e3","unresolved":true,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":"MICROVERION \u003d \"2.82\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def manilaclient():"}],"source_content_type":"text/x-python","patch_set":48,"id":"04751bc3_b36ad6b7","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":11},"updated":"2024-06-12 13:59:58.000000000","message":"s/.*/MICROVERSION\n\nAlso, I\u0027d prefer to say  : \n\nMIN_SHARE_FILE_SYSTEM_MICROVERSION","commit_id":"26ccda037934756ad2437e513a31e18ed07bd97b"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"20bad34b71a1f86c035637957bed2ac727e5d773","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":"MICROVERION \u003d \"2.82\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def manilaclient():"}],"source_content_type":"text/x-python","patch_set":48,"id":"d3f5e376_23ad9499","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":11},"in_reply_to":"04751bc3_b36ad6b7","updated":"2024-06-18 08:14:09.000000000","message":"Done","commit_id":"26ccda037934756ad2437e513a31e18ed07bd97b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a94bd9dd765bdb229254788e383df17d7ec1d8e3","unresolved":true,"context_lines":[{"line_number":42,"context_line":"    return utils.get_sdk_adapter("},{"line_number":43,"context_line":"        \"shared-file-system\","},{"line_number":44,"context_line":"        check_service\u003dTrue,"},{"line_number":45,"context_line":"        shared_file_system_api_version\u003dMICROVERION,"},{"line_number":46,"context_line":"    )"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"8853d999_0bbbf676","line":45,"updated":"2024-06-12 13:59:58.000000000","message":"I\u0027m not really happy with using the same microversion for every call. We could use this microversion as a default one for sure, but I\u0027d prefer to also provide a specific microversion for each of the methods.","commit_id":"26ccda037934756ad2437e513a31e18ed07bd97b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b2020a8b029da31bae6f64cb7d28d9673199554b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    return utils.get_sdk_adapter("},{"line_number":43,"context_line":"        \"shared-file-system\","},{"line_number":44,"context_line":"        check_service\u003dTrue,"},{"line_number":45,"context_line":"        shared_file_system_api_version\u003dMICROVERION,"},{"line_number":46,"context_line":"    )"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"4f48aa35_5640b6ab","line":45,"in_reply_to":"700de518_881c5f4b","updated":"2024-06-27 07:17:38.000000000","message":"Fair enough.","commit_id":"26ccda037934756ad2437e513a31e18ed07bd97b"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"20bad34b71a1f86c035637957bed2ac727e5d773","unresolved":true,"context_lines":[{"line_number":42,"context_line":"    return utils.get_sdk_adapter("},{"line_number":43,"context_line":"        \"shared-file-system\","},{"line_number":44,"context_line":"        check_service\u003dTrue,"},{"line_number":45,"context_line":"        shared_file_system_api_version\u003dMICROVERION,"},{"line_number":46,"context_line":"    )"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"700de518_881c5f4b","line":45,"in_reply_to":"8853d999_0bbbf676","updated":"2024-06-18 08:14:09.000000000","message":"As discussed manila does not allow to pass the µversion in methods.\nSi µversion needs to be passed using shared_file_system_api_version.","commit_id":"26ccda037934756ad2437e513a31e18ed07bd97b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a94bd9dd765bdb229254788e383df17d7ec1d8e3","unresolved":true,"context_lines":[{"line_number":212,"context_line":"        share_id,"},{"line_number":213,"context_line":"        access_type,"},{"line_number":214,"context_line":"        access_to,"},{"line_number":215,"context_line":"    ):"},{"line_number":216,"context_line":"        \"\"\"Get share access"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        :param share_id: the id of the share to get"}],"source_content_type":"text/x-python","patch_set":48,"id":"890716ce_a6e6d1f3","line":215,"updated":"2024-06-12 13:59:58.000000000","message":"here, I\u0027d like to be able to provide a specific microversion if I need.","commit_id":"26ccda037934756ad2437e513a31e18ed07bd97b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b2020a8b029da31bae6f64cb7d28d9673199554b","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        share_id,"},{"line_number":213,"context_line":"        access_type,"},{"line_number":214,"context_line":"        access_to,"},{"line_number":215,"context_line":"    ):"},{"line_number":216,"context_line":"        \"\"\"Get share access"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        :param share_id: the id of the share to get"}],"source_content_type":"text/x-python","patch_set":48,"id":"5c407ab0_d5b8e671","line":215,"in_reply_to":"7c8ec528_6322afb0","updated":"2024-06-27 07:17:38.000000000","message":"Acknowledged","commit_id":"26ccda037934756ad2437e513a31e18ed07bd97b"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"20bad34b71a1f86c035637957bed2ac727e5d773","unresolved":true,"context_lines":[{"line_number":212,"context_line":"        share_id,"},{"line_number":213,"context_line":"        access_type,"},{"line_number":214,"context_line":"        access_to,"},{"line_number":215,"context_line":"    ):"},{"line_number":216,"context_line":"        \"\"\"Get share access"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        :param share_id: the id of the share to get"}],"source_content_type":"text/x-python","patch_set":48,"id":"7c8ec528_6322afb0","line":215,"in_reply_to":"890716ce_a6e6d1f3","updated":"2024-06-18 08:14:09.000000000","message":"See comments #45","commit_id":"26ccda037934756ad2437e513a31e18ed07bd97b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b2020a8b029da31bae6f64cb7d28d9673199554b","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":"MIN_SHARE_FILE_SYSTEM_MICROVERSION \u003d \"2.82\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def manilaclient(context):"}],"source_content_type":"text/x-python","patch_set":49,"id":"e07fee69_fb442194","line":30,"updated":"2024-06-27 07:17:38.000000000","message":"thanks","commit_id":"f0168133f48e19e72b3e5af3e3b3d6967ccbc8f2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"791bd2c4571297e58029945738f39ac9946d0172","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    :raise: ServiceUnavailable if the service is down"},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    return utils.get_sdk_adapter("},{"line_number":43,"context_line":"        \"shared-file-system\","},{"line_number":44,"context_line":"        check_service\u003dTrue,"},{"line_number":45,"context_line":"        shared_file_system_api_version\u003dMIN_SHARE_FILE_SYSTEM_MICROVERSION,"}],"source_content_type":"text/x-python","patch_set":50,"id":"4fc2c516_bd8e4a6b","line":42,"updated":"2024-07-18 12:55:05.000000000","message":"This will instantiate the manila client based on nova\u0027s service user and ignores the user context. This allows a non privileged user to pass a share_id to nova that is not accessible to the user but accessible to nova service user. Nova will attach that share to the user\u0027s VM.","commit_id":"28b34920845709886e2c423c108aea057ba02e98"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b45050e18aa1c7dc6699b9e5d626da91d2b3428f","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    :raise: ServiceUnavailable if the service is down"},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    return utils.get_sdk_adapter("},{"line_number":43,"context_line":"        \"shared-file-system\","},{"line_number":44,"context_line":"        check_service\u003dTrue,"},{"line_number":45,"context_line":"        shared_file_system_api_version\u003dMIN_SHARE_FILE_SYSTEM_MICROVERSION,"}],"source_content_type":"text/x-python","patch_set":50,"id":"67379d87_a57d9357","line":42,"in_reply_to":"4fc2c516_bd8e4a6b","updated":"2024-07-25 14:26:59.000000000","message":"indeed we need some condional for checking whether we would pass the user context or the nova one","commit_id":"28b34920845709886e2c423c108aea057ba02e98"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"15a71cf6de89131bb184bb505489b888314f9d21","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    :raise: ServiceUnavailable if the service is down"},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    return utils.get_sdk_adapter("},{"line_number":43,"context_line":"        \"shared-file-system\","},{"line_number":44,"context_line":"        check_service\u003dTrue,"},{"line_number":45,"context_line":"        shared_file_system_api_version\u003dMIN_SHARE_FILE_SYSTEM_MICROVERSION,"}],"source_content_type":"text/x-python","patch_set":50,"id":"8a2c75cf_33887a69","line":42,"in_reply_to":"67379d87_a57d9357","updated":"2024-08-26 13:10:06.000000000","message":"Should be fixed by the next patch in the serie.","commit_id":"28b34920845709886e2c423c108aea057ba02e98"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8720e558321730bec650dc825a423d2c389a7de8","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    :raise: ServiceUnavailable if the service is down"},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    return utils.get_sdk_adapter("},{"line_number":43,"context_line":"        \"shared-file-system\","},{"line_number":44,"context_line":"        check_service\u003dTrue,"},{"line_number":45,"context_line":"        shared_file_system_api_version\u003dMIN_SHARE_FILE_SYSTEM_MICROVERSION,"}],"source_content_type":"text/x-python","patch_set":50,"id":"e1d5880c_5ac99027","line":42,"in_reply_to":"8a2c75cf_33887a69","updated":"2024-08-28 13:15:05.000000000","message":"Acknowledged","commit_id":"28b34920845709886e2c423c108aea057ba02e98"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc1deff9e670a7664b948255535c52701d778a53","unresolved":true,"context_lines":[{"line_number":142,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":143,"context_line":"        try:"},{"line_number":144,"context_line":"            res \u003d method(self, *args, **kwargs)"},{"line_number":145,"context_line":"        except (sdk_exc.ResourceNotFound) as exc:"},{"line_number":146,"context_line":"            raise exception.ShareNotFound("},{"line_number":147,"context_line":"                share_id\u003dargs[1], reason\u003dexc) from exc"},{"line_number":148,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":50,"id":"e5247cda_d7431bd2","line":145,"updated":"2024-07-31 07:52:45.000000000","message":"In my experience we can get other exception like:\n```\nopenstack.exceptions.BadRequestException: BadRequestException: 400: Client Error for url: http://10.0.76.222/share/v2/share-access-rules?share_id\u003d55458016-abf3-4237-a958-97312edf15ce, Share 55458016-abf3-4237-a958-97312edf15ce not found.\nJul 31 07:42:57 gibi-devstack-aio-jammy nova-compute[3060154]: ERROR nova.compute.manager [instance: 055b72fc-0eba-40c0-aba1-a67ece6fe9ae] \n```\nsee https://review.opendev.org/c/openstack/nova/+/881472/25#message-c214b1604e5b911a250f7ecb360f85627009f494","commit_id":"28b34920845709886e2c423c108aea057ba02e98"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"15a71cf6de89131bb184bb505489b888314f9d21","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":143,"context_line":"        try:"},{"line_number":144,"context_line":"            res \u003d method(self, *args, **kwargs)"},{"line_number":145,"context_line":"        except (sdk_exc.ResourceNotFound) as exc:"},{"line_number":146,"context_line":"            raise exception.ShareNotFound("},{"line_number":147,"context_line":"                share_id\u003dargs[1], reason\u003dexc) from exc"},{"line_number":148,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":50,"id":"0795257c_a6f78d85","line":145,"in_reply_to":"e5247cda_d7431bd2","updated":"2024-08-26 13:10:06.000000000","message":"Done","commit_id":"28b34920845709886e2c423c108aea057ba02e98"}],"nova/tests/fixtures/manila.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf189205b15346a1c21f0f3f56d21419e32e8ecf","unresolved":true,"context_lines":[{"line_number":78,"context_line":"                \"access_to\": \"192.168.0.1\","},{"line_number":79,"context_line":"                \"access_key\": None,"},{"line_number":80,"context_line":"            }"},{"line_number":81,"context_line":"            return nova.share.manila.Access().from_manila_access(access)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def fake_allow(self, context, share_id, access_type, access_to,"},{"line_number":84,"context_line":"            access_level, microversion\u003dNone):"}],"source_content_type":"text/x-python","patch_set":33,"id":"2e7eb079_dedbd49e","line":81,"updated":"2023-05-23 17:29:15.000000000","message":"see, here again, the interface seems wrong to me.","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ea218c147927f0044643a83400eb206b6dc3add","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                \"access_to\": \"192.168.0.1\","},{"line_number":79,"context_line":"                \"access_key\": None,"},{"line_number":80,"context_line":"            }"},{"line_number":81,"context_line":"            return nova.share.manila.Access().from_manila_access(access)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def fake_allow(self, context, share_id, access_type, access_to,"},{"line_number":84,"context_line":"            access_level, microversion\u003dNone):"}],"source_content_type":"text/x-python","patch_set":33,"id":"921a89ed_2d81a336","line":81,"in_reply_to":"2e7eb079_dedbd49e","updated":"2023-06-01 09:37:33.000000000","message":"Done","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf189205b15346a1c21f0f3f56d21419e32e8ecf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"ebda9bd6_112d0260","line":90,"updated":"2023-05-23 17:29:15.000000000","message":"all of this seems good to me.","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"34685de7964396c05b59cc5fc10cf2bd3e552679","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super().setUp()"},{"line_number":28,"context_line":"        # Set the default timeout to 2 seconds to speed up tests"},{"line_number":29,"context_line":"        CONF.set_override(\u0027action_timeout\u0027, 2, \u0027manila\u0027)"},{"line_number":30,"context_line":"        self.call_count \u003d {\"fake_get_access\": 0}"},{"line_number":31,"context_line":"        self.mock_get \u003d self.useFixture(fixtures.MockPatch("},{"line_number":32,"context_line":"            \u0027nova.share.manila.API.get\u0027,"}],"source_content_type":"text/x-python","patch_set":38,"id":"9ea0c33a_caba1a1f","line":29,"range":{"start_line":28,"start_character":0,"end_line":29,"end_character":56},"updated":"2023-11-15 13:47:49.000000000","message":"Is this timeout even used in the functional test? I think this fixture never slow to respond.\n//later\nI think it should be unused. But apparently one of the function tests depends on it unintentionally. If you set this to 100 then `nova.tests.functional.api_sample_tests.test_server_shares.ServerSharesJsonTest.test_server_shares_create_fails_cannot_allow_policy` will fail with timeout. I think that test has a problem as it should not rely on action timeout to pass.","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super().setUp()"},{"line_number":28,"context_line":"        # Set the default timeout to 2 seconds to speed up tests"},{"line_number":29,"context_line":"        CONF.set_override(\u0027action_timeout\u0027, 2, \u0027manila\u0027)"},{"line_number":30,"context_line":"        self.call_count \u003d {\"fake_get_access\": 0}"},{"line_number":31,"context_line":"        self.mock_get \u003d self.useFixture(fixtures.MockPatch("},{"line_number":32,"context_line":"            \u0027nova.share.manila.API.get\u0027,"}],"source_content_type":"text/x-python","patch_set":38,"id":"750755ff_ac23c153","line":29,"range":{"start_line":28,"start_character":0,"end_line":29,"end_character":56},"in_reply_to":"18ce0429_3b69ad42","updated":"2024-01-22 17:09:34.000000000","message":"Sorry, Gibi, I may have misclicked Ack on it.\nIn all tests, the fixture should answer instantly and should not wait.\nThe \"test_server_shares_create_fails_cannot_allow_policy\" test intends to ensure the timeout option works as expected. So if we don\u0027t have the policy applied by Manilla in less than 2 seconds, we raise an error.","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7bde640d7853c541f5598e8e2d8211afc1d8ee1a","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super().setUp()"},{"line_number":28,"context_line":"        # Set the default timeout to 2 seconds to speed up tests"},{"line_number":29,"context_line":"        CONF.set_override(\u0027action_timeout\u0027, 2, \u0027manila\u0027)"},{"line_number":30,"context_line":"        self.call_count \u003d {\"fake_get_access\": 0}"},{"line_number":31,"context_line":"        self.mock_get \u003d self.useFixture(fixtures.MockPatch("},{"line_number":32,"context_line":"            \u0027nova.share.manila.API.get\u0027,"}],"source_content_type":"text/x-python","patch_set":38,"id":"2ea6ee86_a2c7e8cd","line":29,"range":{"start_line":28,"start_character":0,"end_line":29,"end_character":56},"in_reply_to":"42e51774_4c4715bd","updated":"2024-02-13 10:12:56.000000000","message":"Done","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4725e200815ea403db73faea84d87cc990158801","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super().setUp()"},{"line_number":28,"context_line":"        # Set the default timeout to 2 seconds to speed up tests"},{"line_number":29,"context_line":"        CONF.set_override(\u0027action_timeout\u0027, 2, \u0027manila\u0027)"},{"line_number":30,"context_line":"        self.call_count \u003d {\"fake_get_access\": 0}"},{"line_number":31,"context_line":"        self.mock_get \u003d self.useFixture(fixtures.MockPatch("},{"line_number":32,"context_line":"            \u0027nova.share.manila.API.get\u0027,"}],"source_content_type":"text/x-python","patch_set":38,"id":"42e51774_4c4715bd","line":29,"range":{"start_line":28,"start_character":0,"end_line":29,"end_character":56},"in_reply_to":"4492b797_bc7e78ad","updated":"2024-01-30 15:24:35.000000000","message":"Good point from gibi.","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2b265a5e9c95298d859967fca882202653dd1942","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super().setUp()"},{"line_number":28,"context_line":"        # Set the default timeout to 2 seconds to speed up tests"},{"line_number":29,"context_line":"        CONF.set_override(\u0027action_timeout\u0027, 2, \u0027manila\u0027)"},{"line_number":30,"context_line":"        self.call_count \u003d {\"fake_get_access\": 0}"},{"line_number":31,"context_line":"        self.mock_get \u003d self.useFixture(fixtures.MockPatch("},{"line_number":32,"context_line":"            \u0027nova.share.manila.API.get\u0027,"}],"source_content_type":"text/x-python","patch_set":38,"id":"4492b797_bc7e78ad","line":29,"range":{"start_line":28,"start_character":0,"end_line":29,"end_character":56},"in_reply_to":"750755ff_ac23c153","updated":"2024-01-29 14:48:00.000000000","message":"I would move this to the only testcase depends on it. e.g.:\n\n```\ndiff --git a/nova/tests/fixtures/manila.py b/nova/tests/fixtures/manila.py\nindex 3decdfcaa1..d8cd75f725 100644\n--- a/nova/tests/fixtures/manila.py\n+++ b/nova/tests/fixtures/manila.py\n@@ -59,8 +59,6 @@ class ManilaFixture(fixtures.Fixture):\n \n     def setUp(self):\n         super().setUp()\n-        # Set the default timeout to 2 seconds to speed up tests\n-        CONF.set_override(\u0027share_apply_policy_timeout\u0027, 2, \u0027manila\u0027)\n         self.share_access \u003d set()\n         self.mock_get \u003d self.useFixture(fixtures.MockPatch(\n             \u0027nova.share.manila.API.get\u0027,\ndiff --git a/nova/tests/functional/api_sample_tests/test_server_shares.py b/nova/tests/functional/api_sample_tests/test_server_shares.py\nindex 7462c33830..00f9f1f57c 100644\n--- a/nova/tests/functional/api_sample_tests/test_server_shares.py\n+++ b/nova/tests/functional/api_sample_tests/test_server_shares.py\n@@ -154,8 +154,12 @@ class ServerSharesJsonTest(ServerSharesBase):\n         \"\"\"Verify we raise an exception if we get a timeout to apply policy\"\"\"\n         uuid \u003d self.create_server_ok()\n         subs \u003d self._get_create_subs()\n+        # simulate that manila does not set the requested access in time and\n+        # nova times out waiting for it.\n         self.manila_fixture.mock_get_access.return_value \u003d None\n         self.manila_fixture.mock_get_access.side_effect \u003d None\n+        self.flags(share_apply_policy_timeout\u003d2, group\u003d\u0027manila\u0027)\n+\n         response \u003d self._do_post(\n             \"servers/%s/shares\" % uuid, \"server-shares-create-req\", subs\n         )\n```\n\nCan be done in a follow up.","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"92a8fd50e99c2af13419f7cb326db01cce9bf888","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super().setUp()"},{"line_number":28,"context_line":"        # Set the default timeout to 2 seconds to speed up tests"},{"line_number":29,"context_line":"        CONF.set_override(\u0027action_timeout\u0027, 2, \u0027manila\u0027)"},{"line_number":30,"context_line":"        self.call_count \u003d {\"fake_get_access\": 0}"},{"line_number":31,"context_line":"        self.mock_get \u003d self.useFixture(fixtures.MockPatch("},{"line_number":32,"context_line":"            \u0027nova.share.manila.API.get\u0027,"}],"source_content_type":"text/x-python","patch_set":38,"id":"b461f24c_5ac3cd2a","line":29,"range":{"start_line":28,"start_character":0,"end_line":29,"end_character":56},"in_reply_to":"9ea0c33a_caba1a1f","updated":"2023-11-21 14:28:10.000000000","message":"Ack","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4afa5f52af3521f6257c46a37cd083bd055779ff","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super().setUp()"},{"line_number":28,"context_line":"        # Set the default timeout to 2 seconds to speed up tests"},{"line_number":29,"context_line":"        CONF.set_override(\u0027action_timeout\u0027, 2, \u0027manila\u0027)"},{"line_number":30,"context_line":"        self.call_count \u003d {\"fake_get_access\": 0}"},{"line_number":31,"context_line":"        self.mock_get \u003d self.useFixture(fixtures.MockPatch("},{"line_number":32,"context_line":"            \u0027nova.share.manila.API.get\u0027,"}],"source_content_type":"text/x-python","patch_set":38,"id":"18ce0429_3b69ad42","line":29,"range":{"start_line":28,"start_character":0,"end_line":29,"end_character":56},"in_reply_to":"b461f24c_5ac3cd2a","updated":"2023-11-28 08:46:40.000000000","message":"Is it fixed somewhere higher in the series?","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"34685de7964396c05b59cc5fc10cf2bd3e552679","unresolved":true,"context_lines":[{"line_number":66,"context_line":"            manila_share, export_location"},{"line_number":67,"context_line":"        )"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def fake_get_access(self, share_id, access_type, access_to,):"},{"line_number":70,"context_line":"        if self.call_count.get(\"fake_get_access\") \u003d\u003d 0:"},{"line_number":71,"context_line":"            # First call, return None"},{"line_number":72,"context_line":"            self.call_count[\"fake_get_access\"] +\u003d 1"},{"line_number":73,"context_line":"            return None"},{"line_number":74,"context_line":"        else:"},{"line_number":75,"context_line":"            # Second call, return the desired Access object"},{"line_number":76,"context_line":"            access \u003d {"},{"line_number":77,"context_line":"                \"access_level\": \"rw\","},{"line_number":78,"context_line":"                \"state\": \"active\","}],"source_content_type":"text/x-python","patch_set":38,"id":"58301baa_27a38554","line":75,"range":{"start_line":69,"start_character":0,"end_line":75,"end_character":59},"updated":"2023-11-15 13:47:49.000000000","message":"Based on past experience (mainly with the neutron fixture) this kind of hard coded behavior becomes a bottleneck in testing. E.g. as soon as you want to test a scenario with multiple shares this pattern brakes down.\n\nYou don\u0027t need to change it now but I suggest to change it at some point to\n* track allow calls and record at least the share_id \n* use the recorded allow calls to return a proper access from get_access\n* implement deny to remove the tracked share_id\n\nThis can be as simple as a set of share_id stored in the fixture that has access.","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":true,"context_lines":[{"line_number":66,"context_line":"            manila_share, export_location"},{"line_number":67,"context_line":"        )"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def fake_get_access(self, share_id, access_type, access_to,):"},{"line_number":70,"context_line":"        if self.call_count.get(\"fake_get_access\") \u003d\u003d 0:"},{"line_number":71,"context_line":"            # First call, return None"},{"line_number":72,"context_line":"            self.call_count[\"fake_get_access\"] +\u003d 1"},{"line_number":73,"context_line":"            return None"},{"line_number":74,"context_line":"        else:"},{"line_number":75,"context_line":"            # Second call, return the desired Access object"},{"line_number":76,"context_line":"            access \u003d {"},{"line_number":77,"context_line":"                \"access_level\": \"rw\","},{"line_number":78,"context_line":"                \"state\": \"active\","}],"source_content_type":"text/x-python","patch_set":38,"id":"e071a26b_6c0ad525","line":75,"range":{"start_line":69,"start_character":0,"end_line":75,"end_character":59},"in_reply_to":"58301baa_27a38554","updated":"2024-01-12 15:55:55.000000000","message":"Yeah, I fully agree with gibi here, we should persist in memory the accesses that are given and not rely on us counting how many times we access them.\n\nThis also means that you should implement the fake methods for allow and deny IMHO.","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            manila_share, export_location"},{"line_number":67,"context_line":"        )"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def fake_get_access(self, share_id, access_type, access_to,):"},{"line_number":70,"context_line":"        if self.call_count.get(\"fake_get_access\") \u003d\u003d 0:"},{"line_number":71,"context_line":"            # First call, return None"},{"line_number":72,"context_line":"            self.call_count[\"fake_get_access\"] +\u003d 1"},{"line_number":73,"context_line":"            return None"},{"line_number":74,"context_line":"        else:"},{"line_number":75,"context_line":"            # Second call, return the desired Access object"},{"line_number":76,"context_line":"            access \u003d {"},{"line_number":77,"context_line":"                \"access_level\": \"rw\","},{"line_number":78,"context_line":"                \"state\": \"active\","}],"source_content_type":"text/x-python","patch_set":38,"id":"d2c36517_1e092ac6","line":75,"range":{"start_line":69,"start_character":0,"end_line":75,"end_character":59},"in_reply_to":"e071a26b_6c0ad525","updated":"2024-01-22 17:09:34.000000000","message":"Done","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5f7f9e11391df633d8416c07c140c49d1c764564","unresolved":true,"context_lines":[{"line_number":63,"context_line":"        manila_share \u003d ManilaShare(share_id)"},{"line_number":64,"context_line":"        export_location \u003d \"10.0.0.50:/mnt/foo\""},{"line_number":65,"context_line":"        return nova.share.manila.from_manila_share("},{"line_number":66,"context_line":"            manila_share, export_location"},{"line_number":67,"context_line":"        )"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def fake_get_access(self, share_id, access_type, access_to,):"}],"source_content_type":"text/x-python","patch_set":39,"id":"4862f1fb_4dee8f14","line":66,"updated":"2024-01-12 16:22:25.000000000","message":"no, your fixture should return a dict, exactly like the Manila API.\n\nThe goal of this fixture is to mimic the Manila API without running the wsgi service so you could use it in functional tests by faking the HTTP CRUD methods that are sent to Manila.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":true,"context_lines":[{"line_number":63,"context_line":"        manila_share \u003d ManilaShare(share_id)"},{"line_number":64,"context_line":"        export_location \u003d \"10.0.0.50:/mnt/foo\""},{"line_number":65,"context_line":"        return nova.share.manila.from_manila_share("},{"line_number":66,"context_line":"            manila_share, export_location"},{"line_number":67,"context_line":"        )"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def fake_get_access(self, share_id, access_type, access_to,):"}],"source_content_type":"text/x-python","patch_set":39,"id":"499e9f97_765f61cd","line":66,"in_reply_to":"4862f1fb_4dee8f14","updated":"2024-01-22 17:09:34.000000000","message":"Like the cinder or cyborg, this fixture is mocking the API class.\n\nSo in this case the methods provided by nova.share.manila.API\nnova.share.manila.API.get returns a nova.share.manila.Share object, so I think it is correct in this case.\nNote: This is my intent to return an object.\n\nHowever, maybe you want a different fixture, a step below that mocks the OpenStack SDK share methods.\nPlease let me know.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e8db2bd9c3d0eeff06b2a39a1bcf7229e0db643e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        manila_share \u003d ManilaShare(share_id)"},{"line_number":64,"context_line":"        export_location \u003d \"10.0.0.50:/mnt/foo\""},{"line_number":65,"context_line":"        return nova.share.manila.from_manila_share("},{"line_number":66,"context_line":"            manila_share, export_location"},{"line_number":67,"context_line":"        )"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def fake_get_access(self, share_id, access_type, access_to,):"}],"source_content_type":"text/x-python","patch_set":39,"id":"6c0cfb09_65475ab7","line":66,"in_reply_to":"499e9f97_765f61cd","updated":"2024-01-23 14:42:05.000000000","message":"There are pros and cons with a fixture that mocks some nova internal API as it\u0027s simplier but then we need to make sure that in case we change the internal API method, we also need to modify the fixture but OK, I haven\u0027t looked at the cinder fixture and now I understand that\u0027s it\u0027s doing the same, so OK with that, just not modify about that.\n\nThanks.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5f7f9e11391df633d8416c07c140c49d1c764564","unresolved":true,"context_lines":[{"line_number":81,"context_line":"                \"access_to\": \"192.168.0.1\","},{"line_number":82,"context_line":"                \"access_key\": None,"},{"line_number":83,"context_line":"            }"},{"line_number":84,"context_line":"            return nova.share.manila.from_manila_access(access)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def fake_allow(self, share_id, access_type, access_to,"},{"line_number":87,"context_line":"            access_level, microversion\u003dNone):"}],"source_content_type":"text/x-python","patch_set":39,"id":"a6e1d1e1_1c0eab95","line":84,"updated":"2024-01-12 16:22:25.000000000","message":"ditto here, you shouldn\u0027t return some constructed object but you should rather return the plain dict.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":true,"context_lines":[{"line_number":81,"context_line":"                \"access_to\": \"192.168.0.1\","},{"line_number":82,"context_line":"                \"access_key\": None,"},{"line_number":83,"context_line":"            }"},{"line_number":84,"context_line":"            return nova.share.manila.from_manila_access(access)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def fake_allow(self, share_id, access_type, access_to,"},{"line_number":87,"context_line":"            access_level, microversion\u003dNone):"}],"source_content_type":"text/x-python","patch_set":39,"id":"e723c461_ef2cfed5","line":84,"in_reply_to":"a6e1d1e1_1c0eab95","updated":"2024-01-22 17:09:34.000000000","message":"See above as I think it is similar.","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4725e200815ea403db73faea84d87cc990158801","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                \"access_to\": \"192.168.0.1\","},{"line_number":82,"context_line":"                \"access_key\": None,"},{"line_number":83,"context_line":"            }"},{"line_number":84,"context_line":"            return nova.share.manila.from_manila_access(access)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def fake_allow(self, share_id, access_type, access_to,"},{"line_number":87,"context_line":"            access_level, microversion\u003dNone):"}],"source_content_type":"text/x-python","patch_set":39,"id":"c19188c9_3bd1643d","line":84,"in_reply_to":"e723c461_ef2cfed5","updated":"2024-01-30 15:24:35.000000000","message":"Acknowledged","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"}],"nova/tests/unit/test_manila.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":205,"context_line":"        manila_client.api_versions.discover_version \u003d \\"},{"line_number":206,"context_line":"            mock.Mock("},{"line_number":207,"context_line":"                return_value \u003d manila_client.api_versions.APIVersion(\u00272.67\u0027))"},{"line_number":208,"context_line":"        self.assertRaises(exception.UnsupportedManilaAPIVersion,"},{"line_number":209,"context_line":"                          self.create_client,"},{"line_number":210,"context_line":"                          \u002750.0\u0027)"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3206b7a3_40d6724c","line":208,"range":{"start_line":208,"start_character":25,"end_line":208,"end_character":27},"updated":"2022-08-26 08:44:46.000000000","message":"I would wrap the line here","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        manila_client.api_versions.discover_version \u003d \\"},{"line_number":206,"context_line":"            mock.Mock("},{"line_number":207,"context_line":"                return_value \u003d manila_client.api_versions.APIVersion(\u00272.67\u0027))"},{"line_number":208,"context_line":"        self.assertRaises(exception.UnsupportedManilaAPIVersion,"},{"line_number":209,"context_line":"                          self.create_client,"},{"line_number":210,"context_line":"                          \u002750.0\u0027)"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"167ab007_dfe3c993","line":208,"range":{"start_line":208,"start_character":25,"end_line":208,"end_character":27},"in_reply_to":"3206b7a3_40d6724c","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":331,"context_line":"        self.requests.post(self.URL + \u0027/shares/1234/action\u0027,"},{"line_number":332,"context_line":"                          json\u003d{\u0027access\u0027: s})"},{"line_number":333,"context_line":"        access \u003d self.api.allow(self.context,"},{"line_number":334,"context_line":"                                        \u00271234\u0027,"},{"line_number":335,"context_line":"                                        \u0027ip\u0027,"},{"line_number":336,"context_line":"                                        \u00270.0.0.0/0\u0027,"},{"line_number":337,"context_line":"                                        \u0027rw\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"7399f737_7f21ccec","line":334,"range":{"start_line":334,"start_character":8,"end_line":334,"end_character":40},"updated":"2022-08-26 08:44:46.000000000","message":"this is indented very oddly","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":331,"context_line":"        self.requests.post(self.URL + \u0027/shares/1234/action\u0027,"},{"line_number":332,"context_line":"                          json\u003d{\u0027access\u0027: s})"},{"line_number":333,"context_line":"        access \u003d self.api.allow(self.context,"},{"line_number":334,"context_line":"                                        \u00271234\u0027,"},{"line_number":335,"context_line":"                                        \u0027ip\u0027,"},{"line_number":336,"context_line":"                                        \u00270.0.0.0/0\u0027,"},{"line_number":337,"context_line":"                                        \u0027rw\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"4d5c88c3_cedfd403","line":334,"range":{"start_line":334,"start_character":8,"end_line":334,"end_character":40},"in_reply_to":"7399f737_7f21ccec","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc44435ce54ad68fc066a423c00b86582eb2a103","unresolved":true,"context_lines":[{"line_number":353,"context_line":"        # Mock the access_list"},{"line_number":354,"context_line":"        s \u003d self.stub_access()"},{"line_number":355,"context_line":"        self.requests.post(self.URL + \u0027/shares/1234/action\u0027,"},{"line_number":356,"context_line":"                          status_code\u003d400,"},{"line_number":357,"context_line":"                           headers\u003d{\u0027x-compute-request-id\u0027:"},{"line_number":358,"context_line":"                                    \u0027req-0df3171c-82f5-44b2-8c6b-92a1088e6d1d\u0027,"},{"line_number":359,"context_line":"                                    \u0027Content-Type\u0027: \u0027application/json\u0027},"}],"source_content_type":"text/x-python","patch_set":12,"id":"2d3f2d8a_f6315496","line":356,"range":{"start_line":356,"start_character":8,"end_line":356,"end_character":26},"updated":"2022-08-26 08:44:46.000000000","message":"inconsistent indent","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"695d2e1e08900e4c8507a0ba6649b61ef3548ebe","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        # Mock the access_list"},{"line_number":354,"context_line":"        s \u003d self.stub_access()"},{"line_number":355,"context_line":"        self.requests.post(self.URL + \u0027/shares/1234/action\u0027,"},{"line_number":356,"context_line":"                          status_code\u003d400,"},{"line_number":357,"context_line":"                           headers\u003d{\u0027x-compute-request-id\u0027:"},{"line_number":358,"context_line":"                                    \u0027req-0df3171c-82f5-44b2-8c6b-92a1088e6d1d\u0027,"},{"line_number":359,"context_line":"                                    \u0027Content-Type\u0027: \u0027application/json\u0027},"}],"source_content_type":"text/x-python","patch_set":12,"id":"499291bb_cf330376","line":356,"range":{"start_line":356,"start_character":8,"end_line":356,"end_character":26},"in_reply_to":"2d3f2d8a_f6315496","updated":"2022-08-29 10:13:43.000000000","message":"Done","commit_id":"9f25fbd50359fc20e86f4762ad8a3f4c58c65389"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#    Copyright 2011 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":43,"id":"4812cff4_aab93d5d","line":1,"updated":"2024-02-29 12:04:37.000000000","message":"whoops","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"477dd6a1e979028ea7e82e50ba7e980f768a13cb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Copyright 2011 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":43,"id":"4357a1ba_ae0b192b","line":1,"in_reply_to":"4812cff4_aab93d5d","updated":"2024-05-15 16:27:53.000000000","message":"Done","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":true,"context_lines":[{"line_number":21,"context_line":"from nova import test"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from openstack import exceptions as sdk_exc"},{"line_number":24,"context_line":"from openstack.shared_file_system.v2.share import Share as SdkShare"},{"line_number":25,"context_line":"from openstack.shared_file_system.v2.share_access_rule import ("},{"line_number":26,"context_line":"    ShareAccessRule as SdkAccessRule"},{"line_number":27,"context_line":")"},{"line_number":28,"context_line":"from openstack.shared_file_system.v2.share_export_locations import ("},{"line_number":29,"context_line":"    ShareExportLocation as SdkExportLocation"},{"line_number":30,"context_line":")"},{"line_number":31,"context_line":"from openstack.utils import Munch"},{"line_number":32,"context_line":"from unittest import mock"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d nova.conf.CONF"}],"source_content_type":"text/x-python","patch_set":43,"id":"284dd538_f338657b","line":31,"range":{"start_line":24,"start_character":0,"end_line":31,"end_character":33},"updated":"2024-02-29 12:04:37.000000000","message":"\u003e Do not import objects, only modules (*)\n\nFrom https://docs.openstack.org/hacking/latest/user/hacking.html#imports\n\nThis should read:\n\n```\nfrom openstack.shared_file_system.v2 import share\nfrom openstack.shared_file_system.v2 import share_access_rule\nfrom openstack.shared_file_system.v2 import share_export_locations\n```","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"477dd6a1e979028ea7e82e50ba7e980f768a13cb","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from nova import test"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from openstack import exceptions as sdk_exc"},{"line_number":24,"context_line":"from openstack.shared_file_system.v2.share import Share as SdkShare"},{"line_number":25,"context_line":"from openstack.shared_file_system.v2.share_access_rule import ("},{"line_number":26,"context_line":"    ShareAccessRule as SdkAccessRule"},{"line_number":27,"context_line":")"},{"line_number":28,"context_line":"from openstack.shared_file_system.v2.share_export_locations import ("},{"line_number":29,"context_line":"    ShareExportLocation as SdkExportLocation"},{"line_number":30,"context_line":")"},{"line_number":31,"context_line":"from openstack.utils import Munch"},{"line_number":32,"context_line":"from unittest import mock"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"CONF \u003d nova.conf.CONF"}],"source_content_type":"text/x-python","patch_set":43,"id":"044bb93e_f2099b31","line":31,"range":{"start_line":24,"start_character":0,"end_line":31,"end_character":33},"in_reply_to":"284dd538_f338657b","updated":"2024-05-15 16:27:53.000000000","message":"Done","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":false,"context_lines":[{"line_number":147,"context_line":"class BaseManilaTestCase(object):"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def setUp(self):"},{"line_number":150,"context_line":"        super(BaseManilaTestCase, self).setUp()"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        self.mock_get_confgrp \u003d self.useFixture(fixtures.MockPatch("},{"line_number":153,"context_line":"            \u0027nova.utils._get_conf_group\u0027)).mock"}],"source_content_type":"text/x-python","patch_set":43,"id":"fa0d662d_8d7749bc","line":150,"range":{"start_line":150,"start_character":14,"end_line":150,"end_character":38},"updated":"2024-02-29 12:04:37.000000000","message":"nit: not needed in py3","commit_id":"a07400ab9b9f0f188ca749f91ee734aa206e5a65"}],"nova/utils.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"34685de7964396c05b59cc5fc10cf2bd3e552679","unresolved":true,"context_lines":[{"line_number":992,"context_line":"        raise exception.ServiceUnavailable("},{"line_number":993,"context_line":"            _(\"The %(service_type)s service is unavailable: %(error)s\") %"},{"line_number":994,"context_line":"            {\u0027service_type\u0027: service_type, \u0027error\u0027: str(e)})"},{"line_number":995,"context_line":"    return getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027))"},{"line_number":996,"context_line":""},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"def get_endpoint(ksa_adapter):"}],"source_content_type":"text/x-python","patch_set":38,"id":"373b0a45_8fec1691","line":995,"updated":"2023-11-15 13:47:49.000000000","message":"would it be better to use a service type with underscore instead of dashes in the first place?","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"92a8fd50e99c2af13419f7cb326db01cce9bf888","unresolved":true,"context_lines":[{"line_number":992,"context_line":"        raise exception.ServiceUnavailable("},{"line_number":993,"context_line":"            _(\"The %(service_type)s service is unavailable: %(error)s\") %"},{"line_number":994,"context_line":"            {\u0027service_type\u0027: service_type, \u0027error\u0027: str(e)})"},{"line_number":995,"context_line":"    return getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027))"},{"line_number":996,"context_line":""},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"def get_endpoint(ksa_adapter):"}],"source_content_type":"text/x-python","patch_set":38,"id":"d205e77b_400bbd6d","line":995,"in_reply_to":"373b0a45_8fec1691","updated":"2023-11-21 14:28:10.000000000","message":"See answer above.","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4afa5f52af3521f6257c46a37cd083bd055779ff","unresolved":false,"context_lines":[{"line_number":992,"context_line":"        raise exception.ServiceUnavailable("},{"line_number":993,"context_line":"            _(\"The %(service_type)s service is unavailable: %(error)s\") %"},{"line_number":994,"context_line":"            {\u0027service_type\u0027: service_type, \u0027error\u0027: str(e)})"},{"line_number":995,"context_line":"    return getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027))"},{"line_number":996,"context_line":""},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"def get_endpoint(ksa_adapter):"}],"source_content_type":"text/x-python","patch_set":38,"id":"2a48e66f_44a928a7","line":995,"in_reply_to":"d205e77b_400bbd6d","updated":"2023-11-28 08:46:40.000000000","message":"Acknowledged","commit_id":"e12c0431529df07d8dd68651b27596710c14afb7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6fa6963b2e209373b7b469e865b6f6f89b73675d","unresolved":true,"context_lines":[{"line_number":992,"context_line":"        raise exception.ServiceUnavailable("},{"line_number":993,"context_line":"            _(\"The %(service_type)s service is unavailable: %(error)s\") %"},{"line_number":994,"context_line":"            {\u0027service_type\u0027: service_type, \u0027error\u0027: str(e)})"},{"line_number":995,"context_line":"    return getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027))"},{"line_number":996,"context_line":""},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"def get_endpoint(ksa_adapter):"}],"source_content_type":"text/x-python","patch_set":39,"id":"97b029ca_21cf6541","line":995,"updated":"2024-01-12 15:55:55.000000000","message":"You don\u0027t explain in the commit message why you\u0027re changing this. I guess you found a bug with and you wanted to address it at the same time, right?","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f306d3a1e5d7a62ede47bec95dbdee0cf0accbca","unresolved":true,"context_lines":[{"line_number":992,"context_line":"        raise exception.ServiceUnavailable("},{"line_number":993,"context_line":"            _(\"The %(service_type)s service is unavailable: %(error)s\") %"},{"line_number":994,"context_line":"            {\u0027service_type\u0027: service_type, \u0027error\u0027: str(e)})"},{"line_number":995,"context_line":"    return getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027))"},{"line_number":996,"context_line":""},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"def get_endpoint(ksa_adapter):"}],"source_content_type":"text/x-python","patch_set":39,"id":"38aa3725_2c263bf2","line":995,"in_reply_to":"125020c7_18a61ce0","updated":"2024-02-14 11:19:23.000000000","message":"I\u0027m fine changing it in the same patch but I think you should document this in a comment above (L994) and also add some unittest for it here : https://github.com/openstack/nova/blob/e11f08673ea6c46d4df3f4b8b2097e0c69a9938a/nova/tests/unit/test_utils.py#L1155 (the existing UTs are pretty blind on that change, they don\u0027t check the attributes in the returned record)","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d99703377a95bfd26e551993c6533aa3e46497cf","unresolved":true,"context_lines":[{"line_number":992,"context_line":"        raise exception.ServiceUnavailable("},{"line_number":993,"context_line":"            _(\"The %(service_type)s service is unavailable: %(error)s\") %"},{"line_number":994,"context_line":"            {\u0027service_type\u0027: service_type, \u0027error\u0027: str(e)})"},{"line_number":995,"context_line":"    return getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027))"},{"line_number":996,"context_line":""},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"def get_endpoint(ksa_adapter):"}],"source_content_type":"text/x-python","patch_set":39,"id":"aee0e32d_77f2ae55","line":995,"in_reply_to":"38aa3725_2c263bf2","updated":"2024-02-29 12:04:37.000000000","message":"+1 a comment here would be helpful. Though we do this in multiple places in sdk without comments, [e.g.](https://github.com/openstack/openstacksdk/blob/04cdd0a0615093526230a9d5c0ca401ff1f30ab0/openstack/config/cloud_region.py#L73).","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"f537297c89d1b6daaa4eb98414c2ae6ddc5ef0d0","unresolved":true,"context_lines":[{"line_number":992,"context_line":"        raise exception.ServiceUnavailable("},{"line_number":993,"context_line":"            _(\"The %(service_type)s service is unavailable: %(error)s\") %"},{"line_number":994,"context_line":"            {\u0027service_type\u0027: service_type, \u0027error\u0027: str(e)})"},{"line_number":995,"context_line":"    return getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027))"},{"line_number":996,"context_line":""},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"def get_endpoint(ksa_adapter):"}],"source_content_type":"text/x-python","patch_set":39,"id":"125020c7_18a61ce0","line":995,"in_reply_to":"97b029ca_21cf6541","updated":"2024-01-22 17:09:34.000000000","message":"If you are right this was not seen before because the services that use the sdk (placement, ironic) do not contain dash.\n\n\nExplanation:\n\nThe name of the service is \u0027shared-file-system\u0027.\nHowever, the sdk attribute to describe the service method and get a proxy uses \u0027shared_file_system\u0027.\nI guess this is most probably because python\u0027s attributes should use \u0027_\u0027 and not \u0027-\u0027.\nThis is the reason why I used getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027)) later.\n\nTo my mind that better reflects the \"reality\".\n\n\n\nI\u0027ll explain this is the commit msg too. Or do you prefer a separate commit for this purpose ?","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"477dd6a1e979028ea7e82e50ba7e980f768a13cb","unresolved":false,"context_lines":[{"line_number":992,"context_line":"        raise exception.ServiceUnavailable("},{"line_number":993,"context_line":"            _(\"The %(service_type)s service is unavailable: %(error)s\") %"},{"line_number":994,"context_line":"            {\u0027service_type\u0027: service_type, \u0027error\u0027: str(e)})"},{"line_number":995,"context_line":"    return getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027))"},{"line_number":996,"context_line":""},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"def get_endpoint(ksa_adapter):"}],"source_content_type":"text/x-python","patch_set":39,"id":"fbf5a783_24354a60","line":995,"in_reply_to":"aee0e32d_77f2ae55","updated":"2024-05-15 16:27:53.000000000","message":"Done","commit_id":"dd3346c76e42e584e38eedd31d0d22060df50d5d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a94bd9dd765bdb229254788e383df17d7ec1d8e3","unresolved":true,"context_lines":[{"line_number":998,"context_line":"    # The replace(\u0027-\u0027, \u0027_\u0027) below is to handle service names that use"},{"line_number":999,"context_line":"    # hyphens and SDK attributes that use underscores."},{"line_number":1000,"context_line":"    # e.g. service name --\u003e sdk attribute"},{"line_number":1001,"context_line":"    #      \u0027shared-file-system\u0027 --\u003e \u0027shared_file_system\u0027"},{"line_number":1002,"context_line":"    return getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027))"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"fa7682ea_9f600f11","line":1001,"updated":"2024-06-12 13:59:58.000000000","message":"nit: are we sure this is the case for *all* the existing services using hyphens ?\n\nNote:  this is just an open question, not a holder.","commit_id":"26ccda037934756ad2437e513a31e18ed07bd97b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b2020a8b029da31bae6f64cb7d28d9673199554b","unresolved":false,"context_lines":[{"line_number":998,"context_line":"    # The replace(\u0027-\u0027, \u0027_\u0027) below is to handle service names that use"},{"line_number":999,"context_line":"    # hyphens and SDK attributes that use underscores."},{"line_number":1000,"context_line":"    # e.g. service name --\u003e sdk attribute"},{"line_number":1001,"context_line":"    #      \u0027shared-file-system\u0027 --\u003e \u0027shared_file_system\u0027"},{"line_number":1002,"context_line":"    return getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027))"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"22e183e9_3fecfd24","line":1001,"in_reply_to":"0246eb35_10077469","updated":"2024-06-27 07:17:38.000000000","message":"Acknowledged","commit_id":"26ccda037934756ad2437e513a31e18ed07bd97b"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"20bad34b71a1f86c035637957bed2ac727e5d773","unresolved":true,"context_lines":[{"line_number":998,"context_line":"    # The replace(\u0027-\u0027, \u0027_\u0027) below is to handle service names that use"},{"line_number":999,"context_line":"    # hyphens and SDK attributes that use underscores."},{"line_number":1000,"context_line":"    # e.g. service name --\u003e sdk attribute"},{"line_number":1001,"context_line":"    #      \u0027shared-file-system\u0027 --\u003e \u0027shared_file_system\u0027"},{"line_number":1002,"context_line":"    return getattr(conn, service_type.replace(\u0027-\u0027, \u0027_\u0027))"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"0246eb35_10077469","line":1001,"in_reply_to":"fa7682ea_9f600f11","updated":"2024-06-18 08:14:09.000000000","message":"As discussed, hyphens cannot be used in object attribute names.\nNote this is also used within the SDK.","commit_id":"26ccda037934756ad2437e513a31e18ed07bd97b"}],"requirements.txt":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bf189205b15346a1c21f0f3f56d21419e32e8ecf","unresolved":false,"context_lines":[{"line_number":24,"context_line":"jsonschema\u003e\u003d3.2.0 # MIT"},{"line_number":25,"context_line":"python-cinderclient!\u003d4.0.0,\u003e\u003d3.3.0 # Apache-2.0"},{"line_number":26,"context_line":"keystoneauth1\u003e\u003d3.16.0 # Apache-2.0"},{"line_number":27,"context_line":"python-manilaclient\u003e\u003d3.2.0 # Apache-2.0"},{"line_number":28,"context_line":"python-neutronclient\u003e\u003d7.1.0 # Apache-2.0"},{"line_number":29,"context_line":"python-glanceclient\u003e\u003d2.8.0 # Apache-2.0"},{"line_number":30,"context_line":"requests\u003e\u003d2.25.1 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":33,"id":"28506721_1917cc20","line":27,"updated":"2023-05-23 17:29:15.000000000","message":"note : we may need to shortly bump the requirement here once Manila supports the lock API but cool for the moment.","commit_id":"34f7baf428a99b28391eb913d80f00a3bd9ee83a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e3062e63f2a37bcf0f706bd679d463c4944a5c84","unresolved":true,"context_lines":[{"line_number":62,"context_line":"os-service-types\u003e\u003d1.7.0 # Apache-2.0"},{"line_number":63,"context_line":"python-dateutil\u003e\u003d2.7.0 # BSD"},{"line_number":64,"context_line":"futurist\u003e\u003d1.8.0 # Apache-2.0"},{"line_number":65,"context_line":"openstacksdk\u003e\u003d4.0.0 # Apache-2.0"},{"line_number":66,"context_line":"PyYAML\u003e\u003d5.1 # MIT"}],"source_content_type":"text/plain","patch_set":55,"id":"9f843eae_0e26fd8f","line":65,"updated":"2024-10-11 11:20:02.000000000","message":"Thanks, looks good.","commit_id":"104ec798c09aa1df35c4e6a5d147f087e6959d37"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d7285cc66339de8236aa01f9a0b6200c51060339","unresolved":false,"context_lines":[{"line_number":62,"context_line":"os-service-types\u003e\u003d1.7.0 # Apache-2.0"},{"line_number":63,"context_line":"python-dateutil\u003e\u003d2.7.0 # BSD"},{"line_number":64,"context_line":"futurist\u003e\u003d1.8.0 # Apache-2.0"},{"line_number":65,"context_line":"openstacksdk\u003e\u003d4.0.0 # Apache-2.0"},{"line_number":66,"context_line":"PyYAML\u003e\u003d5.1 # MIT"}],"source_content_type":"text/plain","patch_set":55,"id":"0096bfea_e5cbe5cc","line":65,"in_reply_to":"9f843eae_0e26fd8f","updated":"2024-11-05 12:53:46.000000000","message":"Done","commit_id":"104ec798c09aa1df35c4e6a5d147f087e6959d37"}]}
