)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"655559ce22ca409d38b103cf30133ad1fecbf5f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a1ba165f_74137330","updated":"2026-02-10 23:51:48.000000000","message":"@srinesh.a-r@hpe.com: When you get a chance, could you go through the methods that you\u0027ve established familiarity with and see if the descriptions are accurate here? Thanks!\n\n@anoop.shukla@netapp.com: your inputs would be valuable as well!","commit_id":"8718de38988fd4dfa0e2207a772406d47f88925f"},{"author":{"_account_id":38607,"name":"Srinesh A R","display_name":"Srinesh A R","email":"srinesh.a-r@hpe.com","username":"srineshar"},"change_message_id":"1ce808621c220a198e2ba6e82d5d35040fe0cc3d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3afe4e94_21e539b4","in_reply_to":"a1ba165f_74137330","updated":"2026-02-11 10:11:15.000000000","message":"@gouthampravi@gmail.com Sure, I think the type information will be very helpful for new drivers. Will go through and let you know.","commit_id":"8718de38988fd4dfa0e2207a772406d47f88925f"},{"author":{"_account_id":38607,"name":"Srinesh A R","display_name":"Srinesh A R","email":"srinesh.a-r@hpe.com","username":"srineshar"},"change_message_id":"eb7fe4af1c5a7232a78e235bd7aa7ede9459d8a0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ff598629_3e9f49ae","updated":"2026-02-12 08:48:57.000000000","message":"Hi @gouthampravi@gmail.com. I have left some comments inline. Please take a look.","commit_id":"2a4a72d7e1f23010db8d1ceb7331dca5ed715727"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"9fdaaf6efdf78c2b5d5b42a6d992be3643dfdab2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"791bfddf_f82f0c60","updated":"2026-02-19 07:30:50.000000000","message":"Thanks Goutham for the documentation. I have reviewed some parts. Will continue to review this. Provided some comments.","commit_id":"2a4a72d7e1f23010db8d1ceb7331dca5ed715727"}],"manila/share/driver.py":[{"author":{"_account_id":38607,"name":"Srinesh A R","display_name":"Srinesh A R","email":"srinesh.a-r@hpe.com","username":"srineshar"},"change_message_id":"eb7fe4af1c5a7232a78e235bd7aa7ede9459d8a0","unresolved":true,"context_lines":[{"line_number":772,"context_line":"            driver_handles_share_servers is True."},{"line_number":773,"context_line":"        :type share_server: dict or None"},{"line_number":774,"context_line":"        :returns: Dictionary with export locations or None"},{"line_number":775,"context_line":"        :rtype: dict or None"},{"line_number":776,"context_line":"        :raises: ShareBackendException: If share creation fails"},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"        .. note::"}],"source_content_type":"text/x-python","patch_set":2,"id":"d935af79_5422b10f","line":775,"updated":"2026-02-12 08:48:57.000000000","message":"It should be a list of export locations for create_share right?","commit_id":"2a4a72d7e1f23010db8d1ceb7331dca5ed715727"},{"author":{"_account_id":38607,"name":"Srinesh A R","display_name":"Srinesh A R","email":"srinesh.a-r@hpe.com","username":"srineshar"},"change_message_id":"eb7fe4af1c5a7232a78e235bd7aa7ede9459d8a0","unresolved":true,"context_lines":[{"line_number":796,"context_line":"            empty dictionary {}."},{"line_number":797,"context_line":""},{"line_number":798,"context_line":"        **Example return value:**"},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"        ::"},{"line_number":801,"context_line":""},{"line_number":802,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":2,"id":"f7b88af8_d5c4ff19","line":799,"updated":"2026-02-12 08:48:57.000000000","message":"Return value will be a list in this format\n```\n[\n    {\n        \u0027path\u0027: \u002710.0.0.10:/manila_share_abc123\u0027,\n        \u0027is_admin_only\u0027: False,\n        \u0027metadata\u0027: {\u0027preferred\u0027: True},\n    },\n    {\n        \u0027path\u0027: \u002710.0.0.11:/manila_share_abc123\u0027,\n        \u0027is_admin_only\u0027: False,\n        \u0027metadata\u0027: {\u0027preferred\u0027: False},\n    },\n]```","commit_id":"2a4a72d7e1f23010db8d1ceb7331dca5ed715727"},{"author":{"_account_id":38607,"name":"Srinesh A R","display_name":"Srinesh A R","email":"srinesh.a-r@hpe.com","username":"srineshar"},"change_message_id":"eb7fe4af1c5a7232a78e235bd7aa7ede9459d8a0","unresolved":true,"context_lines":[{"line_number":815,"context_line":"        - \u0027is_admin_only\u0027 (bool, required): Whether location is admin-only"},{"line_number":816,"context_line":"        - \u0027metadata\u0027 (dict, optional): Additional location metadata"},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"        **Access rule patterns:**"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        Access rules will contain an \u0027access_to\u0027 field. For IP-based access:"},{"line_number":821,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3c99425f_4521fd0a","line":818,"updated":"2026-02-12 08:48:57.000000000","message":"Do we need to mention the below access rule related details as part of create_share. It is already mentioned as part of the access rules method documentations.","commit_id":"2a4a72d7e1f23010db8d1ceb7331dca5ed715727"},{"author":{"_account_id":38607,"name":"Srinesh A R","display_name":"Srinesh A R","email":"srinesh.a-r@hpe.com","username":"srineshar"},"change_message_id":"eb7fe4af1c5a7232a78e235bd7aa7ede9459d8a0","unresolved":true,"context_lines":[{"line_number":890,"context_line":"                \u0027export_locations\u0027: ["},{"line_number":891,"context_line":"                    {"},{"line_number":892,"context_line":"                        \u0027path\u0027: \u0027192.168.1.10:/path/to/restored_share\u0027,"},{"line_number":893,"context_line":"                        \u0027is_admin_only\u0027: False,"},{"line_number":894,"context_line":"                    },"},{"line_number":895,"context_line":"                ],"},{"line_number":896,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":2,"id":"8b337a54_cbcf65f1","line":893,"updated":"2026-02-12 08:48:57.000000000","message":"We can mention the optional metadata field here also","commit_id":"2a4a72d7e1f23010db8d1ceb7331dca5ed715727"},{"author":{"_account_id":38607,"name":"Srinesh A R","display_name":"Srinesh A R","email":"srinesh.a-r@hpe.com","username":"srineshar"},"change_message_id":"eb7fe4af1c5a7232a78e235bd7aa7ede9459d8a0","unresolved":true,"context_lines":[{"line_number":942,"context_line":"                \u0027export_locations\u0027: ["},{"line_number":943,"context_line":"                    {"},{"line_number":944,"context_line":"                        \u0027path\u0027: \u0027192.168.1.10:/path/to/.snapshot/snap1\u0027,"},{"line_number":945,"context_line":"                        \u0027is_admin_only\u0027: False,"},{"line_number":946,"context_line":"                    },"},{"line_number":947,"context_line":"                ],"},{"line_number":948,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":2,"id":"f00c7f98_b72bbd94","line":945,"updated":"2026-02-12 08:48:57.000000000","message":"We can mention metadata field here if needed","commit_id":"2a4a72d7e1f23010db8d1ceb7331dca5ed715727"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"9fdaaf6efdf78c2b5d5b42a6d992be3643dfdab2","unresolved":true,"context_lines":[{"line_number":971,"context_line":"            **Implementation:** This method is mandatory for all drivers."},{"line_number":972,"context_line":""},{"line_number":973,"context_line":"        .. important::"},{"line_number":974,"context_line":"            **Idempotency:** This method MUST be idempotent. Do not raise an"},{"line_number":975,"context_line":"            exception if the share does not exist on the backend. Log a"},{"line_number":976,"context_line":"            warning and return successfully."},{"line_number":977,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"01fca9c6_c70d11db","line":974,"updated":"2026-02-19 07:30:50.000000000","message":"Is the idempotency requirement enforced via manila API as well? Which means, for a client calling the share delete or snapshot delete API, they should assume it to always return 200?","commit_id":"2a4a72d7e1f23010db8d1ceb7331dca5ed715727"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"9fdaaf6efdf78c2b5d5b42a6d992be3643dfdab2","unresolved":true,"context_lines":[{"line_number":1004,"context_line":"            becomes mandatory and must be implemented."},{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"        .. important::"},{"line_number":1007,"context_line":"            **Idempotency:** This method MUST be idempotent. Do not raise an"},{"line_number":1008,"context_line":"            exception if the snapshot does not exist on the backend. Log a"},{"line_number":1009,"context_line":"            warning and return successfully."},{"line_number":1010,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1387910c_50b3e5f1","line":1007,"updated":"2026-02-19 07:30:50.000000000","message":"Is the idempotency requirement enforced via manila API as well? Which means, for a client calling the share delete or snapshot delete API, they should assume it to always return 200?","commit_id":"2a4a72d7e1f23010db8d1ceb7331dca5ed715727"},{"author":{"_account_id":38607,"name":"Srinesh A R","display_name":"Srinesh A R","email":"srinesh.a-r@hpe.com","username":"srineshar"},"change_message_id":"eb7fe4af1c5a7232a78e235bd7aa7ede9459d8a0","unresolved":true,"context_lines":[{"line_number":1346,"context_line":"        .. important::"},{"line_number":1347,"context_line":"            **Implementation:** This method is mandatory for all drivers."},{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"        **Key capabilities to advertise:**"},{"line_number":1350,"context_line":""},{"line_number":1351,"context_line":"        - \u0027driver_handles_share_servers\u0027: bool (DHSS mode)"},{"line_number":1352,"context_line":"        - \u0027snapshot_support\u0027: bool (enables snapshot operations)"}],"source_content_type":"text/x-python","patch_set":2,"id":"0155c9e4_55ed2eca","line":1349,"updated":"2026-02-12 08:48:57.000000000","message":"We can include a line to mention that this list is not exhaustive ?","commit_id":"2a4a72d7e1f23010db8d1ceb7331dca5ed715727"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"9fdaaf6efdf78c2b5d5b42a6d992be3643dfdab2","unresolved":true,"context_lines":[{"line_number":1346,"context_line":"        .. important::"},{"line_number":1347,"context_line":"            **Implementation:** This method is mandatory for all drivers."},{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"        **Key capabilities to advertise:**"},{"line_number":1350,"context_line":""},{"line_number":1351,"context_line":"        - \u0027driver_handles_share_servers\u0027: bool (DHSS mode)"},{"line_number":1352,"context_line":"        - \u0027snapshot_support\u0027: bool (enables snapshot operations)"}],"source_content_type":"text/x-python","patch_set":2,"id":"a5aa5042_09bb7db0","line":1349,"in_reply_to":"0155c9e4_55ed2eca","updated":"2026-02-19 07:30:50.000000000","message":"OR may be document the below capabilities as mandatory and say there can be capabilities that the drivers can choose to append and can be documented in the driver documentation.","commit_id":"2a4a72d7e1f23010db8d1ceb7331dca5ed715727"},{"author":{"_account_id":38607,"name":"Srinesh A R","display_name":"Srinesh A R","email":"srinesh.a-r@hpe.com","username":"srineshar"},"change_message_id":"eb7fe4af1c5a7232a78e235bd7aa7ede9459d8a0","unresolved":true,"context_lines":[{"line_number":1361,"context_line":"        **Capacity reporting:**"},{"line_number":1362,"context_line":""},{"line_number":1363,"context_line":"        - \u0027total_capacity_gb\u0027: float (total capacity)"},{"line_number":1364,"context_line":"        - \u0027free_capacity_gb\u0027: float (available capacity)"},{"line_number":1365,"context_line":"        - \u0027reserved_percentage\u0027: int (capacity reserved for overprovisioning)"},{"line_number":1366,"context_line":"        - \u0027pools\u0027: list of pool dicts (for multi-pool backends)"},{"line_number":1367,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"34f12400_821c8059","line":1364,"updated":"2026-02-12 08:48:57.000000000","message":"provisioned_capacity_gb can be included","commit_id":"2a4a72d7e1f23010db8d1ceb7331dca5ed715727"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"779fda3d7beca3b8dc072043be1ab402b94ff6a8","unresolved":true,"context_lines":[{"line_number":1657,"context_line":"        .. important::"},{"line_number":1658,"context_line":"            **Access state after management:** After bringing an existing"},{"line_number":1659,"context_line":"            share under Manila management, the driver must ensure the share"},{"line_number":1660,"context_line":"            is in an \"unexported\" state with all existing access rules removed."},{"line_number":1661,"context_line":"            Users must explicitly request access through Manila after the"},{"line_number":1662,"context_line":"            share is managed."},{"line_number":1663,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"52924d21_c66370ae","line":1660,"range":{"start_line":1660,"start_character":12,"end_line":1660,"end_character":79},"updated":"2026-02-18 11:43:54.000000000","message":"this would mean we have a bug in the generic, dell, cephfs and powerscale, as if I recall correctly, none of those remove pre-existing access rules during the manage operation","commit_id":"2a4a72d7e1f23010db8d1ceb7331dca5ed715727"},{"author":{"_account_id":38607,"name":"Srinesh A R","display_name":"Srinesh A R","email":"srinesh.a-r@hpe.com","username":"srineshar"},"change_message_id":"eb7fe4af1c5a7232a78e235bd7aa7ede9459d8a0","unresolved":true,"context_lines":[{"line_number":3845,"context_line":"            recovery."},{"line_number":3846,"context_line":""},{"line_number":3847,"context_line":"        .. important::"},{"line_number":3848,"context_line":"            The dictionary keys MUST be share IDs (not share instance IDs)."},{"line_number":3849,"context_line":"            The manager will raise an exception if incorrect IDs are used."},{"line_number":3850,"context_line":""},{"line_number":3851,"context_line":"        **Example return value:**"}],"source_content_type":"text/x-python","patch_set":2,"id":"58dcd0ca_53cfb771","line":3848,"updated":"2026-02-12 08:48:57.000000000","message":"I think we are using the share instance IDs in the dict keys(share[\u0027id\u0027]). Not the share ids (share[\u0027share_id\u0027])","commit_id":"2a4a72d7e1f23010db8d1ceb7331dca5ed715727"}]}
