)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"b06c254bfd477ce866b4947df58d1b05331b68c5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b6b2fff3_0edf2d67","updated":"2025-07-08 19:07:41.000000000","message":"Thanks for working on this change, Vida! I agree with Liron\u0027s comments. Please take a look at them :)","commit_id":"6abbf33f9ece3c1055723d74ef9af9d494618ee0"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"5c62b548d9be03292753a411e362a12c532bda55","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"389abbd4_1bace23a","updated":"2025-07-10 08:19:02.000000000","message":"Thanks, Vida.\nI understand this patch is still a work in progress, but since I already started reviewing it, I\u0027m continuing to add my comments.\nFor complete coverage of this operation, please refer to the API reference [1][2] — there are additional options that should be verified, such as filtering export locations by project_id, and others.\n\n[1] https://docs.openstack.org/api-ref/shared-file-system/#id496\n[2] https://docs.openstack.org/api-ref/shared-file-system/#id501","commit_id":"1d53544891a3990ce29e71e839abbcd0da785de2"}],"manilaclient/tests/functional/osc/test_share_export_locations.py":[{"author":{"_account_id":30025,"name":"Vida Haririan","display_name":"Vida Haririan","email":"vhariria@redhat.com","username":"vhari"},"change_message_id":"f709c87a3a218ccc7b8008ef0f96a7605d201162","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import json"},{"line_number":14,"context_line":"from tempest.lib import exceptions"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from manilaclient.tests.functional.osc import base"}],"source_content_type":"text/x-python","patch_set":2,"id":"7b72ec8d_a4b6d0c4","line":13,"in_reply_to":"31c0b439_65f91314","updated":"2025-07-03 09:17:13.000000000","message":"\u003e pep8: F401 \u0027json\u0027 imported but unused\n\nPlease fix.","commit_id":"2b29e511d882f09b5a3e248ebc2e69194f86f633"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"728c035667026b6cf63a2a232dfcdf596a7b2c38","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"class ListShareExportLocationsTestCase(base.OSCClientTestBase):"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    def test_export_location_list(self):"},{"line_number":19,"context_line":"        # Create a share"},{"line_number":20,"context_line":"        share \u003d self.create_share()"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5e23d043_445a6908","line":18,"range":{"start_line":18,"start_character":8,"end_line":18,"end_character":33},"updated":"2025-07-08 12:48:43.000000000","message":"Please ensure the test names are aligned with those in the following file https://github.com/openstack/python-manilaclient/blob/master/manilaclient/tests/functional/test_export_locations.py#L31","commit_id":"6abbf33f9ece3c1055723d74ef9af9d494618ee0"},{"author":{"_account_id":30025,"name":"Vida Haririan","display_name":"Vida Haririan","email":"vhariria@redhat.com","username":"vhari"},"change_message_id":"ea15cb72bec1fdd71ebd02fa58496af6e1e98e5e","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"class ListShareExportLocationsTestCase(base.OSCClientTestBase):"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    def test_export_location_list(self):"},{"line_number":19,"context_line":"        # Create a share"},{"line_number":20,"context_line":"        share \u003d self.create_share()"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"015f0d52_0bd7e115","line":18,"range":{"start_line":18,"start_character":8,"end_line":18,"end_character":33},"in_reply_to":"5e23d043_445a6908","updated":"2025-07-09 18:18:55.000000000","message":"Done","commit_id":"6abbf33f9ece3c1055723d74ef9af9d494618ee0"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"54a60783804ee871c64df1c0480149045e3651e2","unresolved":true,"context_lines":[{"line_number":31,"context_line":"            \u0027Path\u0027,"},{"line_number":32,"context_line":"            \u0027Preferred\u0027"},{"line_number":33,"context_line":"        ])"},{"line_number":34,"context_line":"        self.assertTrue(len(export_locations) \u003e 0)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_export_location_show(self):"},{"line_number":37,"context_line":"        # Create a regular share"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ea58e82_a1fd21f5","line":34,"range":{"start_line":34,"start_character":8,"end_line":34,"end_character":50},"updated":"2025-07-08 12:46:17.000000000","message":"self.assertGreater(len(export_locations), 0)","commit_id":"6abbf33f9ece3c1055723d74ef9af9d494618ee0"},{"author":{"_account_id":30025,"name":"Vida Haririan","display_name":"Vida Haririan","email":"vhariria@redhat.com","username":"vhari"},"change_message_id":"ea15cb72bec1fdd71ebd02fa58496af6e1e98e5e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            \u0027Path\u0027,"},{"line_number":32,"context_line":"            \u0027Preferred\u0027"},{"line_number":33,"context_line":"        ])"},{"line_number":34,"context_line":"        self.assertTrue(len(export_locations) \u003e 0)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_export_location_show(self):"},{"line_number":37,"context_line":"        # Create a regular share"}],"source_content_type":"text/x-python","patch_set":3,"id":"49620959_c8ad7019","line":34,"range":{"start_line":34,"start_character":8,"end_line":34,"end_character":50},"in_reply_to":"9ea58e82_a1fd21f5","updated":"2025-07-09 18:18:55.000000000","message":"Done","commit_id":"6abbf33f9ece3c1055723d74ef9af9d494618ee0"},{"author":{"_account_id":30025,"name":"Vida Haririan","display_name":"Vida Haririan","email":"vhariria@redhat.com","username":"vhari"},"change_message_id":"ea15cb72bec1fdd71ebd02fa58496af6e1e98e5e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            \u0027Path\u0027,"},{"line_number":32,"context_line":"            \u0027Preferred\u0027"},{"line_number":33,"context_line":"        ])"},{"line_number":34,"context_line":"        self.assertTrue(len(export_locations) \u003e 0)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_export_location_show(self):"},{"line_number":37,"context_line":"        # Create a regular share"}],"source_content_type":"text/x-python","patch_set":3,"id":"d40f99e4_831c8ee9","line":34,"range":{"start_line":34,"start_character":8,"end_line":34,"end_character":50},"in_reply_to":"9ea58e82_a1fd21f5","updated":"2025-07-09 18:18:55.000000000","message":"Done","commit_id":"6abbf33f9ece3c1055723d74ef9af9d494618ee0"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"54a60783804ee871c64df1c0480149045e3651e2","unresolved":true,"context_lines":[{"line_number":33,"context_line":"        ])"},{"line_number":34,"context_line":"        self.assertTrue(len(export_locations) \u003e 0)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_export_location_show(self):"},{"line_number":37,"context_line":"        # Create a regular share"},{"line_number":38,"context_line":"        share \u003d self.create_share()"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1e79987f_737e2164","line":36,"range":{"start_line":36,"start_character":8,"end_line":36,"end_character":33},"updated":"2025-07-08 12:46:17.000000000","message":"keys validation is missing","commit_id":"6abbf33f9ece3c1055723d74ef9af9d494618ee0"},{"author":{"_account_id":30025,"name":"Vida Haririan","display_name":"Vida Haririan","email":"vhariria@redhat.com","username":"vhari"},"change_message_id":"ea15cb72bec1fdd71ebd02fa58496af6e1e98e5e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        ])"},{"line_number":34,"context_line":"        self.assertTrue(len(export_locations) \u003e 0)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_export_location_show(self):"},{"line_number":37,"context_line":"        # Create a regular share"},{"line_number":38,"context_line":"        share \u003d self.create_share()"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"32a16e89_e1a6e9ee","line":36,"range":{"start_line":36,"start_character":8,"end_line":36,"end_character":33},"in_reply_to":"1e79987f_737e2164","updated":"2025-07-09 18:18:55.000000000","message":"Done","commit_id":"6abbf33f9ece3c1055723d74ef9af9d494618ee0"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"3fc1b89f62979c51c1ac3b01362f819508aafcb4","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_export_location_show(self):"},{"line_number":37,"context_line":"        # Create a regular share"},{"line_number":38,"context_line":"        share \u003d self.create_share()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        # List export locations for the share here"},{"line_number":41,"context_line":"        export_locations \u003d self.listing_result("}],"source_content_type":"text/x-python","patch_set":3,"id":"b053449e_d22020ee","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":35},"updated":"2025-07-09 07:02:09.000000000","message":"Since both tests only perform \u0027get\u0027 operations on the share, you can create a single share in the setUp method and reuse it across both tests","commit_id":"6abbf33f9ece3c1055723d74ef9af9d494618ee0"},{"author":{"_account_id":30025,"name":"Vida Haririan","display_name":"Vida Haririan","email":"vhariria@redhat.com","username":"vhari"},"change_message_id":"ea15cb72bec1fdd71ebd02fa58496af6e1e98e5e","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_export_location_show(self):"},{"line_number":37,"context_line":"        # Create a regular share"},{"line_number":38,"context_line":"        share \u003d self.create_share()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        # List export locations for the share here"},{"line_number":41,"context_line":"        export_locations \u003d self.listing_result("}],"source_content_type":"text/x-python","patch_set":3,"id":"37261c8e_1714e791","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":35},"in_reply_to":"b053449e_d22020ee","updated":"2025-07-09 18:18:55.000000000","message":"Done","commit_id":"6abbf33f9ece3c1055723d74ef9af9d494618ee0"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"b06c254bfd477ce866b4947df58d1b05331b68c5","unresolved":true,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # Assert ID matches"},{"line_number":59,"context_line":"        self.assertEqual(export_location_details[\u0027id\u0027], export_location_id)"},{"line_number":60,"context_line":"        self.assertGreater(len(export_location_details),"},{"line_number":61,"context_line":"                           0, \"No export locations found for the share\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"f9b5e7b9_99697198","line":61,"range":{"start_line":60,"start_character":8,"end_line":61,"end_character":72},"updated":"2025-07-08 19:07:41.000000000","message":"export_location_details should hold a dictionary, so maybe we can drop this assert?","commit_id":"6abbf33f9ece3c1055723d74ef9af9d494618ee0"},{"author":{"_account_id":30025,"name":"Vida Haririan","display_name":"Vida Haririan","email":"vhariria@redhat.com","username":"vhari"},"change_message_id":"ea15cb72bec1fdd71ebd02fa58496af6e1e98e5e","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # Assert ID matches"},{"line_number":59,"context_line":"        self.assertEqual(export_location_details[\u0027id\u0027], export_location_id)"},{"line_number":60,"context_line":"        self.assertGreater(len(export_location_details),"},{"line_number":61,"context_line":"                           0, \"No export locations found for the share\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"188c3cf2_70f92ccb","line":61,"range":{"start_line":60,"start_character":8,"end_line":61,"end_character":72},"in_reply_to":"f9b5e7b9_99697198","updated":"2025-07-09 18:18:55.000000000","message":"Done","commit_id":"6abbf33f9ece3c1055723d74ef9af9d494618ee0"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"5c62b548d9be03292753a411e362a12c532bda55","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def test_list_share_export_locations(self):"},{"line_number":24,"context_line":"        # use the share created in setUp"},{"line_number":25,"context_line":"        share \u003d self.share"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        # Get export locations for the share"},{"line_number":28,"context_line":"        export_locations \u003d self.listing_result("}],"source_content_type":"text/x-python","patch_set":6,"id":"e9a1da69_25f617cf","line":25,"range":{"start_line":25,"start_character":8,"end_line":25,"end_character":26},"updated":"2025-07-10 08:19:02.000000000","message":"There\u0027s no need to define a new variable — you can directly use self.share","commit_id":"1d53544891a3990ce29e71e839abbcd0da785de2"},{"author":{"_account_id":30025,"name":"Vida Haririan","display_name":"Vida Haririan","email":"vhariria@redhat.com","username":"vhari"},"change_message_id":"6b8ad2d8bf12adb3de81445d024ed50c4dfdb1ec","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def test_list_share_export_locations(self):"},{"line_number":24,"context_line":"        # use the share created in setUp"},{"line_number":25,"context_line":"        share \u003d self.share"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        # Get export locations for the share"},{"line_number":28,"context_line":"        export_locations \u003d self.listing_result("}],"source_content_type":"text/x-python","patch_set":6,"id":"90a5ace9_c91a6cff","line":25,"range":{"start_line":25,"start_character":8,"end_line":25,"end_character":26},"in_reply_to":"e9a1da69_25f617cf","updated":"2025-07-10 10:57:06.000000000","message":"Done","commit_id":"1d53544891a3990ce29e71e839abbcd0da785de2"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"5c62b548d9be03292753a411e362a12c532bda55","unresolved":true,"context_lines":[{"line_number":31,"context_line":"        )"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        # Validate expected keys are present"},{"line_number":34,"context_line":"        expected_columns \u003d [\u0027ID\u0027, \u0027Path\u0027, \u0027Preferred\u0027]"},{"line_number":35,"context_line":"        for column in expected_columns:"},{"line_number":36,"context_line":"            self.assertIn(column, export_locations[0],"},{"line_number":37,"context_line":"                          f\"Missing column: {column}\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"c7b0cec7_a88845e9","line":34,"range":{"start_line":34,"start_character":8,"end_line":34,"end_character":54},"updated":"2025-07-10 08:19:02.000000000","message":"According to the API reference, there are additional keys that need to be validated:\nhttps://docs.openstack.org/api-ref/shared-file-system/#id496","commit_id":"1d53544891a3990ce29e71e839abbcd0da785de2"},{"author":{"_account_id":30025,"name":"Vida Haririan","display_name":"Vida Haririan","email":"vhariria@redhat.com","username":"vhari"},"change_message_id":"6b8ad2d8bf12adb3de81445d024ed50c4dfdb1ec","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        )"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        # Validate expected keys are present"},{"line_number":34,"context_line":"        expected_columns \u003d [\u0027ID\u0027, \u0027Path\u0027, \u0027Preferred\u0027]"},{"line_number":35,"context_line":"        for column in expected_columns:"},{"line_number":36,"context_line":"            self.assertIn(column, export_locations[0],"},{"line_number":37,"context_line":"                          f\"Missing column: {column}\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"d035cda9_ac82e4e1","line":34,"range":{"start_line":34,"start_character":8,"end_line":34,"end_character":54},"in_reply_to":"c7b0cec7_a88845e9","updated":"2025-07-10 10:57:06.000000000","message":"please see https://docs.openstack.org/api-ref/shared-file-system/#share-export-locations-since-api-v2-9","commit_id":"1d53544891a3990ce29e71e839abbcd0da785de2"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"5c62b548d9be03292753a411e362a12c532bda55","unresolved":true,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def test_get_share_export_location(self):"},{"line_number":41,"context_line":"        # Use the share created in setUp"},{"line_number":42,"context_line":"        share \u003d self.share"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        # List export locations for the share"},{"line_number":45,"context_line":"        export_locations \u003d self.listing_result("}],"source_content_type":"text/x-python","patch_set":6,"id":"d08814ee_9b4cf0a2","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":26},"updated":"2025-07-10 08:19:02.000000000","message":"Same","commit_id":"1d53544891a3990ce29e71e839abbcd0da785de2"},{"author":{"_account_id":30025,"name":"Vida Haririan","display_name":"Vida Haririan","email":"vhariria@redhat.com","username":"vhari"},"change_message_id":"6b8ad2d8bf12adb3de81445d024ed50c4dfdb1ec","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def test_get_share_export_location(self):"},{"line_number":41,"context_line":"        # Use the share created in setUp"},{"line_number":42,"context_line":"        share \u003d self.share"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        # List export locations for the share"},{"line_number":45,"context_line":"        export_locations \u003d self.listing_result("}],"source_content_type":"text/x-python","patch_set":6,"id":"d60285e4_00d8c7c1","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":26},"in_reply_to":"d08814ee_9b4cf0a2","updated":"2025-07-10 10:57:06.000000000","message":"Done","commit_id":"1d53544891a3990ce29e71e839abbcd0da785de2"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"5c62b548d9be03292753a411e362a12c532bda55","unresolved":true,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        self.assertTrue(len(export_locations) \u003e 0)"},{"line_number":63,"context_line":"        # Validate expected keys are present"},{"line_number":64,"context_line":"        expected_keys \u003d [\u0027id\u0027, \u0027path\u0027, \u0027preferred\u0027]"},{"line_number":65,"context_line":"        for key in expected_keys:"},{"line_number":66,"context_line":"            self.assertIn(key, export_location_details, f\"Missing key: {key}\")"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"6894c9e3_9a4ff7b2","line":64,"range":{"start_line":64,"start_character":8,"end_line":64,"end_character":51},"updated":"2025-07-10 08:19:02.000000000","message":"Same\nhttps://docs.openstack.org/api-ref/shared-file-system/#id501","commit_id":"1d53544891a3990ce29e71e839abbcd0da785de2"},{"author":{"_account_id":30025,"name":"Vida Haririan","display_name":"Vida Haririan","email":"vhariria@redhat.com","username":"vhari"},"change_message_id":"6b8ad2d8bf12adb3de81445d024ed50c4dfdb1ec","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        self.assertTrue(len(export_locations) \u003e 0)"},{"line_number":63,"context_line":"        # Validate expected keys are present"},{"line_number":64,"context_line":"        expected_keys \u003d [\u0027id\u0027, \u0027path\u0027, \u0027preferred\u0027]"},{"line_number":65,"context_line":"        for key in expected_keys:"},{"line_number":66,"context_line":"            self.assertIn(key, export_location_details, f\"Missing key: {key}\")"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"78ae4cfd_530bd6f5","line":64,"range":{"start_line":64,"start_character":8,"end_line":64,"end_character":51},"in_reply_to":"6894c9e3_9a4ff7b2","updated":"2025-07-10 10:57:06.000000000","message":"Same","commit_id":"1d53544891a3990ce29e71e839abbcd0da785de2"}]}
