)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"aeb9c83f6b73a2fabaa356abf7d342cdbc62c49b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6da5e100_f5116184","updated":"2025-10-09 20:25:46.000000000","message":"Hey, Jan! Thank you very much for proposing this change. Please take a look at the suggestions inline","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"bc4469ae89b9f0242409abf20e617d7b973330e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"105f18da_db7b5579","updated":"2025-10-27 13:26:57.000000000","message":"@ces.eduardo98@gmail.com\nHello Carlos, thanks, all your points here are somehow legit. It is only about our little different point of view about code maintainability/code reusability/stability and our own experiences.\nManila is the only Plugin we/I am planning to cover and it combined with all the tests in \"core\" Horizon should be enough for other teams to be able to implement tests by themselves and I am planning to \"be around\" in case anyone needs some help. So plugins have free hands and can implement the tests in their best will. I am just trying to provide what we thinks is the best (from our experience).\n\nI am happy that you agree/are okay with my explanation and I am really trying to make it as best as I can and as least problematic in the future as possible.\nBut of course if there will be later some things that will be worth improving/simplifying/make some general functions - which happens all the time, code becomes obsolete in time, you are finding new functions, ways. You can do it, it is your code and I will be around to help with it if you need :-).\n\nBtw. is there anyone else who is an active core member in Manila-ui from the Manila side? I can see that @gouthampravi@gmail.com is very busy (especially now in PTG time) so if you can bring here someone else who is a core, for review, it would be nice and if there is not many active people around Manila-ui from Manila side, can we agree on that one +2 from Manila is enough and I will bring here second +2 from Horizon? (If I am right, all Horizon core people should also be core for all/majority of the plugins).\n\nI wanted here around the plugin test cover at least one active person from Manila who will understand my intentions, will bring relevant points from Manila side and will know why it is implemented like that. And I can see you understand it well so you probably won this place 😄.","commit_id":"4cc413fc14ce637f8c222126a2842c09c1ecb2d3"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"6ba6fde45427813814dc8bf68247404094a11b39","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"bcd93feb_bdf80ff7","updated":"2025-10-22 14:04:38.000000000","message":"Hey, Jan! Thanks for working on the comments and the detailed replied. I apologize for the delay on getting back to this change - somehow I lost the email notification on my inbox.\n\nI really appreciate the work you have been doing and I will do my best on engaging our team for faster reviews on your change.","commit_id":"4cc413fc14ce637f8c222126a2842c09c1ecb2d3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b9ae8f883b25a920e01eab4fc8f2cafe0f277dc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"653aa9de_44ebbffe","updated":"2025-10-27 20:35:31.000000000","message":"None of my concerns need to hold up this patch.. Please do respond to the comments if you disagree, and if you agree, you can make a trivial patch to address these..","commit_id":"4cc413fc14ce637f8c222126a2842c09c1ecb2d3"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"d7e989cc4c01c6dbfb1709a5bd4facb397de57df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"6c9e2940_edd0ef1f","updated":"2025-10-28 23:38:00.000000000","message":"recheck, everything should be fixed on Horizon side now.","commit_id":"4cc413fc14ce637f8c222126a2842c09c1ecb2d3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b9ae8f883b25a920e01eab4fc8f2cafe0f277dc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"188e7c55_ad9f7c25","in_reply_to":"105f18da_db7b5579","updated":"2025-10-27 20:35:31.000000000","message":"Thank you for your patience with the reviews.. Sorry I\u0027ve not been here earlier, but, i wanted to commend the effort you\u0027re putting into this and teaching us the way! Thanks for doing that!","commit_id":"4cc413fc14ce637f8c222126a2842c09c1ecb2d3"}],"manila_ui/tests/selenium/integration/conftest.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"aeb9c83f6b73a2fabaa356abf7d342cdbc62c49b","unresolved":true,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_utils import uuidutils"},{"line_number":14,"context_line":"import pytest"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from manila_ui.tests.selenium.integration import test_share_snapshots"}],"source_content_type":"text/x-python","patch_set":4,"id":"e2e4993a_5c0dd819","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":2},"updated":"2025-10-09 20:25:46.000000000","message":"nit: please add a blank space after the oslo_utils import, as defined in the openstack code  guidelines: https://docs.openstack.org/hacking/latest/user/hacking.html#imports","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b9ae8f883b25a920e01eab4fc8f2cafe0f277dc8","unresolved":true,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_utils import uuidutils"},{"line_number":14,"context_line":"import pytest"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from manila_ui.tests.selenium.integration import test_share_snapshots"}],"source_content_type":"text/x-python","patch_set":4,"id":"93f0bb9c_d1c42f2f","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":2},"in_reply_to":"045ed7d1_37d8b9ae","updated":"2025-10-27 20:35:31.000000000","message":"Hey Carlos, Jan - \n\nI disagree with this; pytest, oslo_utils are both considered \"third-party lib imports\" from that guideline, so belong in the same group","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"4695ebf16d4f83f5e7ca94a3ca9ae17de1b529aa","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_utils import uuidutils"},{"line_number":14,"context_line":"import pytest"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from manila_ui.tests.selenium.integration import test_share_snapshots"}],"source_content_type":"text/x-python","patch_set":4,"id":"abf1cab7_3a02d9f2","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":2},"in_reply_to":"93f0bb9c_d1c42f2f","updated":"2025-10-29 03:26:33.000000000","message":"Hello, thank you, I will fix it in following patch.","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"79fbb2267e0023c440a0d5cbb159eea4ff1a8bae","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_utils import uuidutils"},{"line_number":14,"context_line":"import pytest"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from manila_ui.tests.selenium.integration import test_share_snapshots"}],"source_content_type":"text/x-python","patch_set":4,"id":"045ed7d1_37d8b9ae","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":2},"in_reply_to":"e2e4993a_5c0dd819","updated":"2025-10-09 21:45:40.000000000","message":"Done","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"aeb9c83f6b73a2fabaa356abf7d342cdbc62c49b","unresolved":true,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"@pytest.fixture"},{"line_number":64,"context_line":"def new_share_snapshot(new_share, share_snapshot_name,"},{"line_number":65,"context_line":"                       openstack_client):"},{"line_number":66,"context_line":"    share_snapshot \u003d openstack_client.shared_file_system.create_share_snapshot("},{"line_number":67,"context_line":"        share_id\u003dnew_share.id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"a389dc76_e1743904","line":64,"range":{"start_line":64,"start_character":23,"end_line":64,"end_character":32},"updated":"2025-10-09 20:25:46.000000000","message":"nit: maybe naming this share_name would be a better name for this, as the share already exists and the snapshot is the \u0027new\u0027 resource","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"d10b072e037ee2a4b88451cddbaf07abe7df14d4","unresolved":true,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"@pytest.fixture"},{"line_number":64,"context_line":"def new_share_snapshot(new_share, share_snapshot_name,"},{"line_number":65,"context_line":"                       openstack_client):"},{"line_number":66,"context_line":"    share_snapshot \u003d openstack_client.shared_file_system.create_share_snapshot("},{"line_number":67,"context_line":"        share_id\u003dnew_share.id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"c770f4a3_fa16bc07","line":64,"range":{"start_line":64,"start_character":23,"end_line":64,"end_character":32},"in_reply_to":"0d60a7ea_680ca523","updated":"2025-10-09 21:48:09.000000000","message":"In the first paragraph, last sentence I meant that\n\"keep the order new_share_snapshot is not executed before the new_share fixture.\" :-)","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"79fbb2267e0023c440a0d5cbb159eea4ff1a8bae","unresolved":true,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"@pytest.fixture"},{"line_number":64,"context_line":"def new_share_snapshot(new_share, share_snapshot_name,"},{"line_number":65,"context_line":"                       openstack_client):"},{"line_number":66,"context_line":"    share_snapshot \u003d openstack_client.shared_file_system.create_share_snapshot("},{"line_number":67,"context_line":"        share_id\u003dnew_share.id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"0d60a7ea_680ca523","line":64,"range":{"start_line":64,"start_character":23,"end_line":64,"end_character":32},"in_reply_to":"a389dc76_e1743904","updated":"2025-10-09 21:45:40.000000000","message":"I do not understand your point. This is not naming, this is calling a fixture. And no, this share probably does not exist (because the order of fixtures execution is dependent here) but using this approach calling it here we know it is executed before new_share_snapshot to keep the order new_share_snapshot is not executed before the new_share snapshot.\n\nThe share_name fixture is already defined and it is a different fixture, a fixture for creating the name of the share, not for the create share itself so this will never work here.\nAnd no, the snapshot is not the only \"new\" resource here, also share is a new resource here (because you need share to be able to create a snapshot) and as I mentioned the \"new\" snapshots is dependent on creating \"new\" share.\n\nIf the point of your comment was different, feel free to elaborate.","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"6ba6fde45427813814dc8bf68247404094a11b39","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"@pytest.fixture"},{"line_number":64,"context_line":"def new_share_snapshot(new_share, share_snapshot_name,"},{"line_number":65,"context_line":"                       openstack_client):"},{"line_number":66,"context_line":"    share_snapshot \u003d openstack_client.shared_file_system.create_share_snapshot("},{"line_number":67,"context_line":"        share_id\u003dnew_share.id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"c7ce2a37_9aba72fb","line":64,"range":{"start_line":64,"start_character":23,"end_line":64,"end_character":32},"in_reply_to":"c770f4a3_fa16bc07","updated":"2025-10-22 14:04:38.000000000","message":"\u003e This is not naming\n\nI understand this is calling a fixture, but the fixture is being defined and the parameters we are defining have a name, right? So at the end, it\u0027s like naming parameters of the fixture? That\u0027s what I meant.\n\nThe current name of what parameter we expect makes sense, even though I suggested something that I thought could be more readable in this context, so that\u0027s fine if you\u0027d like to keep it as is.\n\nThe share can be new as well, yes. But does this feature have context if the share is new or not? No, as it is being called with a share, regardless if new or not. For this fixture, we are focusing on creating the share snapshot and we need the share, but if we isolate these constraints and focus on the purpose of the test, the share is a secondary element even though it\u0027s necessary for the share creation. \n\n\u003e The share_name fixture is already defined and it is a different fixture, a fixture for creating the name of the share, not for the create share itself so this will never work here.\n\nAt the end, I misjudged that we were not inside a class and this would shadow the outer scope, so if you\u0027re avoiding a name that matches something outside the fixture, it\u0027s fine and please keep it as is.","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"aeb9c83f6b73a2fabaa356abf7d342cdbc62c49b","unresolved":true,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"@pytest.fixture"},{"line_number":78,"context_line":"def clear_share_smapshot(request, share_snapshot_name, new_share):"},{"line_number":79,"context_line":"    client_fixture_name \u003d request.param"},{"line_number":80,"context_line":"    openstack_client \u003d request.getfixturevalue(client_fixture_name)"},{"line_number":81,"context_line":"    yield None"}],"source_content_type":"text/x-python","patch_set":4,"id":"2680b012_5901fc6c","line":78,"range":{"start_line":78,"start_character":55,"end_line":78,"end_character":64},"updated":"2025-10-09 20:25:46.000000000","message":"share_name","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"aeb9c83f6b73a2fabaa356abf7d342cdbc62c49b","unresolved":true,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"@pytest.fixture"},{"line_number":78,"context_line":"def clear_share_smapshot(request, share_snapshot_name, new_share):"},{"line_number":79,"context_line":"    client_fixture_name \u003d request.param"},{"line_number":80,"context_line":"    openstack_client \u003d request.getfixturevalue(client_fixture_name)"},{"line_number":81,"context_line":"    yield None"}],"source_content_type":"text/x-python","patch_set":4,"id":"fe419b70_2a5f2e68","line":78,"range":{"start_line":78,"start_character":16,"end_line":78,"end_character":24},"updated":"2025-10-09 20:25:46.000000000","message":"snapshot","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"79fbb2267e0023c440a0d5cbb159eea4ff1a8bae","unresolved":true,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"@pytest.fixture"},{"line_number":78,"context_line":"def clear_share_smapshot(request, share_snapshot_name, new_share):"},{"line_number":79,"context_line":"    client_fixture_name \u003d request.param"},{"line_number":80,"context_line":"    openstack_client \u003d request.getfixturevalue(client_fixture_name)"},{"line_number":81,"context_line":"    yield None"}],"source_content_type":"text/x-python","patch_set":4,"id":"852a59b8_68052807","line":78,"range":{"start_line":78,"start_character":55,"end_line":78,"end_character":64},"in_reply_to":"2680b012_5901fc6c","updated":"2025-10-09 21:45:40.000000000","message":"ditto","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"6ba6fde45427813814dc8bf68247404094a11b39","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"@pytest.fixture"},{"line_number":78,"context_line":"def clear_share_smapshot(request, share_snapshot_name, new_share):"},{"line_number":79,"context_line":"    client_fixture_name \u003d request.param"},{"line_number":80,"context_line":"    openstack_client \u003d request.getfixturevalue(client_fixture_name)"},{"line_number":81,"context_line":"    yield None"}],"source_content_type":"text/x-python","patch_set":4,"id":"b2ead5e3_55303d20","line":78,"range":{"start_line":78,"start_character":55,"end_line":78,"end_character":64},"in_reply_to":"852a59b8_68052807","updated":"2025-10-22 14:04:38.000000000","message":"Done","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"79fbb2267e0023c440a0d5cbb159eea4ff1a8bae","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"@pytest.fixture"},{"line_number":78,"context_line":"def clear_share_smapshot(request, share_snapshot_name, new_share):"},{"line_number":79,"context_line":"    client_fixture_name \u003d request.param"},{"line_number":80,"context_line":"    openstack_client \u003d request.getfixturevalue(client_fixture_name)"},{"line_number":81,"context_line":"    yield None"}],"source_content_type":"text/x-python","patch_set":4,"id":"e1a0627b_e0bc9a14","line":78,"range":{"start_line":78,"start_character":16,"end_line":78,"end_character":24},"in_reply_to":"fe419b70_2a5f2e68","updated":"2025-10-09 21:45:40.000000000","message":"Hehe, thanks!","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"aeb9c83f6b73a2fabaa356abf7d342cdbc62c49b","unresolved":true,"context_lines":[{"line_number":80,"context_line":"    openstack_client \u003d request.getfixturevalue(client_fixture_name)"},{"line_number":81,"context_line":"    yield None"},{"line_number":82,"context_line":"    snapshot_id \u003d None"},{"line_number":83,"context_line":"    snapshots_sdk \u003d openstack_client.shared_file_system.share_snapshots()"},{"line_number":84,"context_line":"    for snapshot in snapshots_sdk:"},{"line_number":85,"context_line":"        if snapshot[\u0027name\u0027] \u003d\u003d share_snapshot_name:"},{"line_number":86,"context_line":"            snapshot_id \u003d snapshot[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ea84b83_0e87c146","line":83,"range":{"start_line":83,"start_character":4,"end_line":83,"end_character":17},"updated":"2025-10-09 20:25:46.000000000","message":"snapshot_list","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"6ba6fde45427813814dc8bf68247404094a11b39","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    openstack_client \u003d request.getfixturevalue(client_fixture_name)"},{"line_number":81,"context_line":"    yield None"},{"line_number":82,"context_line":"    snapshot_id \u003d None"},{"line_number":83,"context_line":"    snapshots_sdk \u003d openstack_client.shared_file_system.share_snapshots()"},{"line_number":84,"context_line":"    for snapshot in snapshots_sdk:"},{"line_number":85,"context_line":"        if snapshot[\u0027name\u0027] \u003d\u003d share_snapshot_name:"},{"line_number":86,"context_line":"            snapshot_id \u003d snapshot[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"8b1dc2f3_736ad51c","line":83,"range":{"start_line":83,"start_character":4,"end_line":83,"end_character":17},"in_reply_to":"096fdba6_788c22cc","updated":"2025-10-22 14:04:38.000000000","message":"\u003e From my point of view the snapshots_sdk is much more clear.\n\nI disagree but don\u0027t think we should spend much energy on this if you feel like keeping it :)","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"79fbb2267e0023c440a0d5cbb159eea4ff1a8bae","unresolved":true,"context_lines":[{"line_number":80,"context_line":"    openstack_client \u003d request.getfixturevalue(client_fixture_name)"},{"line_number":81,"context_line":"    yield None"},{"line_number":82,"context_line":"    snapshot_id \u003d None"},{"line_number":83,"context_line":"    snapshots_sdk \u003d openstack_client.shared_file_system.share_snapshots()"},{"line_number":84,"context_line":"    for snapshot in snapshots_sdk:"},{"line_number":85,"context_line":"        if snapshot[\u0027name\u0027] \u003d\u003d share_snapshot_name:"},{"line_number":86,"context_line":"            snapshot_id \u003d snapshot[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"096fdba6_788c22cc","line":83,"range":{"start_line":83,"start_character":4,"end_line":83,"end_character":17},"in_reply_to":"1ea84b83_0e87c146","updated":"2025-10-09 21:45:40.000000000","message":"From my point of view the snapshots_sdk is much more clear.\nThe S at the end of the snapshots tells you there are multiple snapshots, SDK appendix tells you that you get it from SDK not from UI. I use this style in all the UI tests.","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"aeb9c83f6b73a2fabaa356abf7d342cdbc62c49b","unresolved":true,"context_lines":[{"line_number":81,"context_line":"    yield None"},{"line_number":82,"context_line":"    snapshot_id \u003d None"},{"line_number":83,"context_line":"    snapshots_sdk \u003d openstack_client.shared_file_system.share_snapshots()"},{"line_number":84,"context_line":"    for snapshot in snapshots_sdk:"},{"line_number":85,"context_line":"        if snapshot[\u0027name\u0027] \u003d\u003d share_snapshot_name:"},{"line_number":86,"context_line":"            snapshot_id \u003d snapshot[\u0027id\u0027]"},{"line_number":87,"context_line":"    test_share_snapshots.wait_for_steady_state_of_share_snapshot("}],"source_content_type":"text/x-python","patch_set":4,"id":"36d51dff_7461182d","line":84,"range":{"start_line":84,"start_character":20,"end_line":84,"end_character":33},"updated":"2025-10-09 20:25:46.000000000","message":"snapshot_list","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"79fbb2267e0023c440a0d5cbb159eea4ff1a8bae","unresolved":true,"context_lines":[{"line_number":81,"context_line":"    yield None"},{"line_number":82,"context_line":"    snapshot_id \u003d None"},{"line_number":83,"context_line":"    snapshots_sdk \u003d openstack_client.shared_file_system.share_snapshots()"},{"line_number":84,"context_line":"    for snapshot in snapshots_sdk:"},{"line_number":85,"context_line":"        if snapshot[\u0027name\u0027] \u003d\u003d share_snapshot_name:"},{"line_number":86,"context_line":"            snapshot_id \u003d snapshot[\u0027id\u0027]"},{"line_number":87,"context_line":"    test_share_snapshots.wait_for_steady_state_of_share_snapshot("}],"source_content_type":"text/x-python","patch_set":4,"id":"671196cd_85dce6ab","line":84,"range":{"start_line":84,"start_character":20,"end_line":84,"end_character":33},"in_reply_to":"36d51dff_7461182d","updated":"2025-10-09 21:45:40.000000000","message":"ditto","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"6ba6fde45427813814dc8bf68247404094a11b39","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    yield None"},{"line_number":82,"context_line":"    snapshot_id \u003d None"},{"line_number":83,"context_line":"    snapshots_sdk \u003d openstack_client.shared_file_system.share_snapshots()"},{"line_number":84,"context_line":"    for snapshot in snapshots_sdk:"},{"line_number":85,"context_line":"        if snapshot[\u0027name\u0027] \u003d\u003d share_snapshot_name:"},{"line_number":86,"context_line":"            snapshot_id \u003d snapshot[\u0027id\u0027]"},{"line_number":87,"context_line":"    test_share_snapshots.wait_for_steady_state_of_share_snapshot("}],"source_content_type":"text/x-python","patch_set":4,"id":"070b2988_cda9c806","line":84,"range":{"start_line":84,"start_character":20,"end_line":84,"end_character":33},"in_reply_to":"671196cd_85dce6ab","updated":"2025-10-22 14:04:38.000000000","message":"Done","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"aeb9c83f6b73a2fabaa356abf7d342cdbc62c49b","unresolved":true,"context_lines":[{"line_number":83,"context_line":"    snapshots_sdk \u003d openstack_client.shared_file_system.share_snapshots()"},{"line_number":84,"context_line":"    for snapshot in snapshots_sdk:"},{"line_number":85,"context_line":"        if snapshot[\u0027name\u0027] \u003d\u003d share_snapshot_name:"},{"line_number":86,"context_line":"            snapshot_id \u003d snapshot[\u0027id\u0027]"},{"line_number":87,"context_line":"    test_share_snapshots.wait_for_steady_state_of_share_snapshot("},{"line_number":88,"context_line":"        openstack_client, snapshot_id)"},{"line_number":89,"context_line":"    openstack_client.shared_file_system.delete_share_snapshot(snapshot_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"8896e0e2_4968c949","line":86,"updated":"2025-10-09 20:25:46.000000000","message":"we should break the for loop after this, else it will continue iterating over snapshots even though we found the one we wanted","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"79fbb2267e0023c440a0d5cbb159eea4ff1a8bae","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    snapshots_sdk \u003d openstack_client.shared_file_system.share_snapshots()"},{"line_number":84,"context_line":"    for snapshot in snapshots_sdk:"},{"line_number":85,"context_line":"        if snapshot[\u0027name\u0027] \u003d\u003d share_snapshot_name:"},{"line_number":86,"context_line":"            snapshot_id \u003d snapshot[\u0027id\u0027]"},{"line_number":87,"context_line":"    test_share_snapshots.wait_for_steady_state_of_share_snapshot("},{"line_number":88,"context_line":"        openstack_client, snapshot_id)"},{"line_number":89,"context_line":"    openstack_client.shared_file_system.delete_share_snapshot(snapshot_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"592ffbe9_9e0ccb87","line":86,"in_reply_to":"8896e0e2_4968c949","updated":"2025-10-09 21:45:40.000000000","message":"Definitely, thanks!","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"aeb9c83f6b73a2fabaa356abf7d342cdbc62c49b","unresolved":true,"context_lines":[{"line_number":100,"context_line":"    test_shares.wait_for_steady_state_of_share("},{"line_number":101,"context_line":"        openstack_client, share_from_snapshot_name)"},{"line_number":102,"context_line":"    openstack_client.shared_file_system.delete_share("},{"line_number":103,"context_line":"        openstack_client.shared_file_system.find_share("},{"line_number":104,"context_line":"            share_from_snapshot_name).id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bc82f4d7_40e4a882","line":104,"range":{"start_line":103,"start_character":8,"end_line":104,"end_character":40},"updated":"2025-10-09 20:25:46.000000000","message":"maybe we should prevent an issue and do this call outside of the delete_share() call? it would look a bit more readable and also if this goes wrong, then we\u0027d be sending an exception to the method.","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"6ba6fde45427813814dc8bf68247404094a11b39","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    test_shares.wait_for_steady_state_of_share("},{"line_number":101,"context_line":"        openstack_client, share_from_snapshot_name)"},{"line_number":102,"context_line":"    openstack_client.shared_file_system.delete_share("},{"line_number":103,"context_line":"        openstack_client.shared_file_system.find_share("},{"line_number":104,"context_line":"            share_from_snapshot_name).id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fbc424b_bb0bff20","line":104,"range":{"start_line":103,"start_character":8,"end_line":104,"end_character":40},"in_reply_to":"955c3021_d47da63f","updated":"2025-10-22 14:04:38.000000000","message":"\u003e What issue are you talking about? What exactly are we preventing by calling it outside?\n\nThe share not being found and the cleanup failing for no reason due to an uncaught exception in a missing share? At this point we don\u0027t even care if the share is not found right? Rverything ran, we waited on the state of the share, we\u0027re just cleaning up. If you think Selenium is handling this just fine, let\u0027s keep it as is.","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"79fbb2267e0023c440a0d5cbb159eea4ff1a8bae","unresolved":true,"context_lines":[{"line_number":100,"context_line":"    test_shares.wait_for_steady_state_of_share("},{"line_number":101,"context_line":"        openstack_client, share_from_snapshot_name)"},{"line_number":102,"context_line":"    openstack_client.shared_file_system.delete_share("},{"line_number":103,"context_line":"        openstack_client.shared_file_system.find_share("},{"line_number":104,"context_line":"            share_from_snapshot_name).id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"955c3021_d47da63f","line":104,"range":{"start_line":103,"start_character":8,"end_line":104,"end_character":40},"in_reply_to":"bc82f4d7_40e4a882","updated":"2025-10-09 21:45:40.000000000","message":"What issue are you talking about? What exactly are we preventing by calling it outside?\nBesides the fact that it will add a number of lines and additional variable in the code.\nIt is not part of the test itself, it is a Fixture (part of a setup/teardown) so there is not expectation that it will fail by itself (out of the test) or that we will use this for debugging and if there appears an exception for whatever reason, then it will still be catched by Selenium Exception.\n\nIf this is a part of a test, not a fixture, I would probably agree with you but here I do not see a point. But if you have some strong argument to change it, I will do it.","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b9ae8f883b25a920e01eab4fc8f2cafe0f277dc8","unresolved":true,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_utils import uuidutils"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import pytest"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from manila_ui.tests.selenium.integration import test_share_snapshots"},{"line_number":18,"context_line":"from manila_ui.tests.selenium.integration import test_shares"}],"source_content_type":"text/x-python","patch_set":5,"id":"12670a19_297b45cf","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":13},"updated":"2025-10-27 20:35:31.000000000","message":"belongs in the group above..","commit_id":"4cc413fc14ce637f8c222126a2842c09c1ecb2d3"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"4695ebf16d4f83f5e7ca94a3ca9ae17de1b529aa","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_utils import uuidutils"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import pytest"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from manila_ui.tests.selenium.integration import test_share_snapshots"},{"line_number":18,"context_line":"from manila_ui.tests.selenium.integration import test_shares"}],"source_content_type":"text/x-python","patch_set":5,"id":"82675b3f_764a23e4","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":13},"in_reply_to":"12670a19_297b45cf","updated":"2025-10-29 03:26:33.000000000","message":"ditto","commit_id":"4cc413fc14ce637f8c222126a2842c09c1ecb2d3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b9ae8f883b25a920e01eab4fc8f2cafe0f277dc8","unresolved":true,"context_lines":[{"line_number":93,"context_line":"        openstack_client, snapshot_id)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"@pytest.fixture"},{"line_number":97,"context_line":"def clear_share_from_snapshot(request, share_from_snapshot_name,"},{"line_number":98,"context_line":"                              new_share_snapshot):"},{"line_number":99,"context_line":"    client_fixture_name \u003d request.param"},{"line_number":100,"context_line":"    openstack_client \u003d request.getfixturevalue(client_fixture_name)"},{"line_number":101,"context_line":"    yield None"},{"line_number":102,"context_line":"    test_shares.wait_for_steady_state_of_share("},{"line_number":103,"context_line":"        openstack_client, share_from_snapshot_name)"},{"line_number":104,"context_line":"    openstack_client.shared_file_system.delete_share("},{"line_number":105,"context_line":"        openstack_client.shared_file_system.find_share("},{"line_number":106,"context_line":"            share_from_snapshot_name).id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"92be6125_efd90254","line":106,"range":{"start_line":96,"start_character":0,"end_line":106,"end_character":41},"updated":"2025-10-27 20:35:31.000000000","message":"afiact, this is the same as clear_share? could we just reuse that?","commit_id":"4cc413fc14ce637f8c222126a2842c09c1ecb2d3"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"4695ebf16d4f83f5e7ca94a3ca9ae17de1b529aa","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        openstack_client, snapshot_id)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"@pytest.fixture"},{"line_number":97,"context_line":"def clear_share_from_snapshot(request, share_from_snapshot_name,"},{"line_number":98,"context_line":"                              new_share_snapshot):"},{"line_number":99,"context_line":"    client_fixture_name \u003d request.param"},{"line_number":100,"context_line":"    openstack_client \u003d request.getfixturevalue(client_fixture_name)"},{"line_number":101,"context_line":"    yield None"},{"line_number":102,"context_line":"    test_shares.wait_for_steady_state_of_share("},{"line_number":103,"context_line":"        openstack_client, share_from_snapshot_name)"},{"line_number":104,"context_line":"    openstack_client.shared_file_system.delete_share("},{"line_number":105,"context_line":"        openstack_client.shared_file_system.find_share("},{"line_number":106,"context_line":"            share_from_snapshot_name).id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"a0f7da66_e69bd229","line":106,"range":{"start_line":96,"start_character":0,"end_line":106,"end_character":41},"in_reply_to":"92be6125_efd90254","updated":"2025-10-29 03:26:33.000000000","message":"Theoretically it is the same (the purpose, both are removing the share), practically it is not. As the fixtures are executed out of the test (setup/teardown) everything for the fixtures needs to be defined before the fixture is requested, usually using other fixtures as parameters. So if we want to use as a parameter anything else than other fixture (directly) or if we want to have there \"variable fixture\" or value then it needs to be done using request/getfixturevalue and in this case It would need another separated specific fixture only for this purpose (on the top of the current one) if I am right.\nI do not think that there is a better solution than this current one.\n\nFixture is not like a standard Python function. Normal python function is explicitly_called(with whatever argument). On the other side Pytest Fixture is Implicitly_injected as a test function parameter. In the code the structure and everything seems very very similar but it works significantly differently.","commit_id":"4cc413fc14ce637f8c222126a2842c09c1ecb2d3"}],"manila_ui/tests/selenium/integration/test_share_snapshots.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"aeb9c83f6b73a2fabaa356abf7d342cdbc62c49b","unresolved":true,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def wait_for_steady_state_of_share_snapshot(openstack_client,"},{"line_number":22,"context_line":"                                            share_snapshot_id):"},{"line_number":23,"context_line":"    for attempt in range(120):"},{"line_number":24,"context_line":"        if (openstack_client.shared_file_system.get_share_snapshot("},{"line_number":25,"context_line":"                share_snapshot_id).status in [\"available\", \"error\"]):"},{"line_number":26,"context_line":"            break"},{"line_number":27,"context_line":"        else:"},{"line_number":28,"context_line":"            time.sleep(3)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def wait_for_share_snapshot_is_deleted(openstack_client, share_snapshot_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ddbdc26_815e3a0d","line":28,"range":{"start_line":23,"start_character":1,"end_line":28,"end_character":25},"updated":"2025-10-09 20:25:46.000000000","message":"this was implemented in shares and also here... I think we\u0027ll see this repeating more in the future with other tests. Can we do it in an approach like this: https://github.com/openstack/python-manilaclient/blob/4bde7759b6c7c857bff1eee048378b269746c729/manilaclient/tests/functional/client.py#L1106-L1130 ?\nI\u0027d suggest the creation of a utils.py file manila_ui/tests/selenium/ and adding this function I am suggesting there. Then it will also helping to save some time in the future and it will be easier to maintain in case APIs change as well.","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"dc15a40ff1c380d913baeea9f566bd2833f6c0c5","unresolved":true,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def wait_for_steady_state_of_share_snapshot(openstack_client,"},{"line_number":22,"context_line":"                                            share_snapshot_id):"},{"line_number":23,"context_line":"    for attempt in range(120):"},{"line_number":24,"context_line":"        if (openstack_client.shared_file_system.get_share_snapshot("},{"line_number":25,"context_line":"                share_snapshot_id).status in [\"available\", \"error\"]):"},{"line_number":26,"context_line":"            break"},{"line_number":27,"context_line":"        else:"},{"line_number":28,"context_line":"            time.sleep(3)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def wait_for_share_snapshot_is_deleted(openstack_client, share_snapshot_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"48c88ae4_483be31d","line":28,"range":{"start_line":23,"start_character":1,"end_line":28,"end_character":25},"in_reply_to":"1ddbdc26_815e3a0d","updated":"2025-10-09 22:33:21.000000000","message":"If you take a look at it more closely then:\nFor Share the parameter is share_name, for Snapshot it is share_snapshot_id. It is a significant difference and it has causes, because at some places there is no available share ID and it would cost a bunch of additional code or additional dependencies to get it.\nAnd of course the API calls are significantly different:\nshared_file_system.get_share_snapshot vs shared_file_system.get_share + shareshared_file_system.find_share\n\nSo the parameters are different, the calls are different (basically everything except the for cycle and wait is different) and unifying it somehow would probably turn it into a bigger, hard to read, hard to modify (in case) function. Even more if (as you mentioned) we would need to add there also some other actions (in the future) that can require this approach.\n\nIf we are talking about multiple functions like that then I completely agree but I used (in Horizon) one for Instances, one for Volumes and one for Volume_Snapshots.\nSo I do not expect more functions like this here and I do not see it worth it for 2 functions.\n\nThe tests in total is not so much code and I faced it multiple times in Horizon that we needed to change something specific for some tests because of some flakiness, etc. And although I want to make the code as much reusable as possible, I saw it in the previous Horizon tests, those tests were so reusable so they were completely unmaintainable.\n\nI really appreciate your review and if you tell me that you really want something implemented different way than I think it is the best (and the idea is not completely off), I will happily do it for you as I did in Vida\u0027s points, but I would like to save you the trouble with hard to maintainable code for a few saved lines.","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"6ba6fde45427813814dc8bf68247404094a11b39","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def wait_for_steady_state_of_share_snapshot(openstack_client,"},{"line_number":22,"context_line":"                                            share_snapshot_id):"},{"line_number":23,"context_line":"    for attempt in range(120):"},{"line_number":24,"context_line":"        if (openstack_client.shared_file_system.get_share_snapshot("},{"line_number":25,"context_line":"                share_snapshot_id).status in [\"available\", \"error\"]):"},{"line_number":26,"context_line":"            break"},{"line_number":27,"context_line":"        else:"},{"line_number":28,"context_line":"            time.sleep(3)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def wait_for_share_snapshot_is_deleted(openstack_client, share_snapshot_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bed9e186_570ba7b0","line":28,"range":{"start_line":23,"start_character":1,"end_line":28,"end_character":25},"in_reply_to":"48c88ae4_483be31d","updated":"2025-10-22 14:04:38.000000000","message":"\u003e For Share the parameter is share_name, for Snapshot it is share_snapshot_id. It is a significant difference and it has causes, because at some places there is no available share ID and it would cost a bunch of additional code or additional dependencies to get it.\n\nI understand that and I suggested it because we dealt with similar situations in the code before and they ended up being pretty clean solutions and a pattern we started to use for situations like this, as for example this: https://github.com/openstack/manila-tempest-plugin/blob/496237a646a3cff808a52bce540356029f69c5b0/manila_tempest_tests/common/waiters.py#L44 - where the calls are also significantly different.\n\n\u003e If we are talking about multiple functions like that then I completely agree but I used (in Horizon) one for Instances, one for Volumes and one for Volume_Snapshots.\n\nYep, at the end we ended up having a waiters file that has scenarios that are generic enough but also target different use cases (migration, replication and regular statuses).\n\n\u003e The tests in total is not so much code and I faced it multiple times in Horizon that we needed to change something specific for some tests because of some flakiness, etc. And although I want to make the code as much reusable as possible, I saw it in the previous Horizon tests, those tests were so reusable so they were completely unmaintainable.\n\nThank you for the context and sharing your thoughts on this.\n\n\u003e but I would like to save you the trouble with hard to maintainable code for a few saved lines.\n\nI understand and appreciate the thought, but I would also like to clarify that this is not just about saving some lines, it\u0027s more on the lines of having similar code throughout the whole code base of manila and making it easier to contribute, as well as if something changes in the client, we don\u0027t need to go update it for 20 resources we have in Manila, instead, we are looking at a common place that is more sustainable for maintenance in the long run, as the example on manila-tempest-plugin always saves us some time while implementing things.\n\nI shared these thoughts considering all the context I have in the other manila repositories and I really do not expect you to pick this up on this change honestly. If you had the cycles and agrees with the motivation, then it\u0027s fine. The manila team can help with that enhancement when we have some cycles 😊","commit_id":"510a406b2e8e6eb39ae3f7411a071f69ca08b5ad"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b9ae8f883b25a920e01eab4fc8f2cafe0f277dc8","unresolved":true,"context_lines":[{"line_number":15,"context_line":"import openstack.exceptions as openstack_exception"},{"line_number":16,"context_line":"import pytest"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from openstack_dashboard.test.selenium import widgets"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def wait_for_steady_state_of_share_snapshot(openstack_client,"}],"source_content_type":"text/x-python","patch_set":5,"id":"8798b373_6b2036f5","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":53},"updated":"2025-10-27 20:35:31.000000000","message":"belongs in the group above","commit_id":"4cc413fc14ce637f8c222126a2842c09c1ecb2d3"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"4695ebf16d4f83f5e7ca94a3ca9ae17de1b529aa","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import openstack.exceptions as openstack_exception"},{"line_number":16,"context_line":"import pytest"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from openstack_dashboard.test.selenium import widgets"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def wait_for_steady_state_of_share_snapshot(openstack_client,"}],"source_content_type":"text/x-python","patch_set":5,"id":"b109a030_5074a24d","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":53},"in_reply_to":"8798b373_6b2036f5","updated":"2025-10-29 03:26:33.000000000","message":"ditto","commit_id":"4cc413fc14ce637f8c222126a2842c09c1ecb2d3"}]}
