)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"42d6de80bce7573627961d472ecd48bed6cd0959","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"fc1f3bb0_3099b0e7","updated":"2026-08-19 00:18:57.000000000","message":"Thank you for working on this change. Looks good, I only have two comments other than the ones Anoop shared. Please take a look at the comments inline","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"9f8e5b5b205a5e0d946f1792df6c379657585d5e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3e4cad35_5600f7db","updated":"2026-08-17 10:55:14.000000000","message":"Thanks for the work done here Goutham. Code looks clean. I have some questions below.","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"268ae94aa89faaff5ab036dbc9f8a0ea36af2ecf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c4af91d7_0f63eeb0","updated":"2026-08-19 10:34:08.000000000","message":"Overall Looks good to me.","commit_id":"285f259bdf11e0a14d3a4f6dfef5d05ad508a9f3"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"55fb2ad8ed469a6bc07edc640d38baba8b776cfd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"aa9c53d7_3b4d3b23","updated":"2026-08-19 22:38:26.000000000","message":"Thank you for working on this change and all the lustre ecosystem you introduced, Goutham! It\u0027s quite a hard effort and definitely great results for the community. Let\u0027s tick this off our review list :)","commit_id":"285f259bdf11e0a14d3a4f6dfef5d05ad508a9f3"}],"manila/share/drivers/lustre/driver.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7e2019768fbde7800d16ed4b7aace3e763b23dae","unresolved":true,"context_lines":[{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        project_id \u003d self._get_directory_project_id(share_path)"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"        size \u003d driver_options.get(\u0027size\u0027)"},{"line_number":449,"context_line":"        if not size:"},{"line_number":450,"context_line":"            limit_kb \u003d self._get_project_limit_kb(project_id)"},{"line_number":451,"context_line":"            if limit_kb \u003c\u003d 0:"}],"source_content_type":"text/x-python","patch_set":4,"id":"4943f271_1c437b0e","line":448,"range":{"start_line":448,"start_character":0,"end_line":448,"end_character":41},"updated":"2026-07-30 14:01:14.000000000","message":"why?","commit_id":"bb3b4c6659d73550666af35da4d7b66d2ee611f6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7a20ccc2b9476417b02d57ab882fa3d26c2a74ae","unresolved":false,"context_lines":[{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        project_id \u003d self._get_directory_project_id(share_path)"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"        size \u003d driver_options.get(\u0027size\u0027)"},{"line_number":449,"context_line":"        if not size:"},{"line_number":450,"context_line":"            limit_kb \u003d self._get_project_limit_kb(project_id)"},{"line_number":451,"context_line":"            if limit_kb \u003c\u003d 0:"}],"source_content_type":"text/x-python","patch_set":4,"id":"f04d7cc1_e92d0f13","line":448,"range":{"start_line":448,"start_character":0,"end_line":448,"end_character":41},"in_reply_to":"4943f271_1c437b0e","updated":"2026-08-09 03:03:40.000000000","message":"Done","commit_id":"bb3b4c6659d73550666af35da4d7b66d2ee611f6"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"9f8e5b5b205a5e0d946f1792df6c379657585d5e","unresolved":true,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"lustre_opts \u003d ["},{"line_number":48,"context_line":"    cfg.HostAddressOpt("},{"line_number":49,"context_line":"        \u0027lustre_share_export_ip\u0027,"},{"line_number":50,"context_line":"        required\u003dTrue,"},{"line_number":51,"context_line":"        help\u003d\"IP or hostname of the Lustre client mount point that is \""},{"line_number":52,"context_line":"             \"accessible to tenants. Used in export locations.\"),"}],"source_content_type":"text/x-python","patch_set":6,"id":"b3580136_cf4a124c","line":49,"range":{"start_line":49,"start_character":9,"end_line":49,"end_character":31},"updated":"2026-08-17 10:55:14.000000000","message":"since this option can take ip/hostname - should the naming of the option reflect it?","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3bb7228cee207ff09a0df4b45051d0257f1ec099","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"lustre_opts \u003d ["},{"line_number":48,"context_line":"    cfg.HostAddressOpt("},{"line_number":49,"context_line":"        \u0027lustre_share_export_ip\u0027,"},{"line_number":50,"context_line":"        required\u003dTrue,"},{"line_number":51,"context_line":"        help\u003d\"IP or hostname of the Lustre client mount point that is \""},{"line_number":52,"context_line":"             \"accessible to tenants. Used in export locations.\"),"}],"source_content_type":"text/x-python","patch_set":6,"id":"f7e3068b_e658d0d2","line":49,"range":{"start_line":49,"start_character":9,"end_line":49,"end_character":31},"in_reply_to":"b3580136_cf4a124c","updated":"2026-08-19 05:22:23.000000000","message":"Hmm, what would we name it?\n\n\"lustre_share_export_address\"?\n\nWe\u0027ve other drivers here that have the same name and behavior. For example: \"netapp_server_hostname\" can be an IP address or a hostname, ``lvm_share_export_ips`` can be hostnames or IPs, \"cephfs_ganesha_export_ips\" can be hostnames or IPs...\n\nI don\u0027t think either is good/bad. If you feel strongly about this, let me know..","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"048e311cadc6553b2081000a7391048881408bf5","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"lustre_opts \u003d ["},{"line_number":48,"context_line":"    cfg.HostAddressOpt("},{"line_number":49,"context_line":"        \u0027lustre_share_export_ip\u0027,"},{"line_number":50,"context_line":"        required\u003dTrue,"},{"line_number":51,"context_line":"        help\u003d\"IP or hostname of the Lustre client mount point that is \""},{"line_number":52,"context_line":"             \"accessible to tenants. Used in export locations.\"),"}],"source_content_type":"text/x-python","patch_set":6,"id":"a87b5cbc_89526e04","line":49,"range":{"start_line":49,"start_character":9,"end_line":49,"end_character":31},"in_reply_to":"f7e3068b_e658d0d2","updated":"2026-08-19 10:33:30.000000000","message":"I think if other drivers have that precedence we can leave it at that. Thanks for clarification.","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"9f8e5b5b205a5e0d946f1792df6c379657585d5e","unresolved":true,"context_lines":[{"line_number":155,"context_line":"            privsep_os.chmod(\u00270711\u0027, share_root)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _check_lustre_version(self):"},{"line_number":158,"context_line":"        out, __ \u003d self._exec_mds(\u0027lctl_get_param\u0027, \u0027version\u0027)"},{"line_number":159,"context_line":"        version_str \u003d out.strip()"},{"line_number":160,"context_line":"        LOG.info(\"Lustre version: %s\", version_str)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"04b24a70_f6709fb0","line":158,"updated":"2026-08-17 10:55:14.000000000","message":"can this line except? Do we need to handle the exception? Eg. wrong IPs?","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"42d6de80bce7573627961d472ecd48bed6cd0959","unresolved":true,"context_lines":[{"line_number":155,"context_line":"            privsep_os.chmod(\u00270711\u0027, share_root)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _check_lustre_version(self):"},{"line_number":158,"context_line":"        out, __ \u003d self._exec_mds(\u0027lctl_get_param\u0027, \u0027version\u0027)"},{"line_number":159,"context_line":"        version_str \u003d out.strip()"},{"line_number":160,"context_line":"        LOG.info(\"Lustre version: %s\", version_str)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"f5706892_390633e7","line":158,"in_reply_to":"04b24a70_f6709fb0","updated":"2026-08-19 00:18:57.000000000","message":"+1","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3bb7228cee207ff09a0df4b45051d0257f1ec099","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            privsep_os.chmod(\u00270711\u0027, share_root)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _check_lustre_version(self):"},{"line_number":158,"context_line":"        out, __ \u003d self._exec_mds(\u0027lctl_get_param\u0027, \u0027version\u0027)"},{"line_number":159,"context_line":"        version_str \u003d out.strip()"},{"line_number":160,"context_line":"        LOG.info(\"Lustre version: %s\", version_str)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"0af7b7ab_1a0a205b","line":158,"in_reply_to":"f5706892_390633e7","updated":"2026-08-19 05:22:23.000000000","message":"Done","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"42d6de80bce7573627961d472ecd48bed6cd0959","unresolved":true,"context_lines":[{"line_number":261,"context_line":"            share_id)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    @coordination.synchronized("},{"line_number":264,"context_line":"        \u0027lustre-project-id-{self.configuration.lustre_fs_name}\u0027)"},{"line_number":265,"context_line":"    def _assign_project_id(self, share_path):"},{"line_number":266,"context_line":"        \"\"\"Allocate a project ID and assign it to the directory."},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bb67008b_627cc030","line":264,"range":{"start_line":264,"start_character":8,"end_line":264,"end_character":63},"updated":"2026-08-19 00:18:57.000000000","message":"shouldn\u0027t this be:\n```suggestion\n        f\u0027lustre-project-id-{self.configuration.lustre_fs_name}\u0027)\n```\n?","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3bb7228cee207ff09a0df4b45051d0257f1ec099","unresolved":false,"context_lines":[{"line_number":261,"context_line":"            share_id)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    @coordination.synchronized("},{"line_number":264,"context_line":"        \u0027lustre-project-id-{self.configuration.lustre_fs_name}\u0027)"},{"line_number":265,"context_line":"    def _assign_project_id(self, share_path):"},{"line_number":266,"context_line":"        \"\"\"Allocate a project ID and assign it to the directory."},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"8c622cec_ceb378cb","line":264,"range":{"start_line":264,"start_character":8,"end_line":264,"end_character":63},"in_reply_to":"bb67008b_627cc030","updated":"2026-08-19 05:22:23.000000000","message":"The formatting happens in the coordination module: https://opendev.org/openstack/manila/src/branch/master/manila/coordination.py#L129\n\ndoing this eagerly would work, but, why bother? - we\u0027ve made sure to take any lock params.","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"9f8e5b5b205a5e0d946f1792df6c379657585d5e","unresolved":true,"context_lines":[{"line_number":344,"context_line":"        raise exception.ShareBackendException("},{"line_number":345,"context_line":"            msg\u003d_(\"Could not read project ID from %s.\") % path)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def create_share(self, context, share, share_server\u003dNone):"},{"line_number":348,"context_line":"        requested_proto \u003d share[\u0027share_proto\u0027].upper()"},{"line_number":349,"context_line":"        if requested_proto !\u003d \u0027LUSTRE\u0027:"},{"line_number":350,"context_line":"            raise exception.InvalidShare("}],"source_content_type":"text/x-python","patch_set":6,"id":"8cce116c_da8a09f3","line":347,"updated":"2026-08-17 10:55:14.000000000","message":"Is there a rollback in case the create_share fails?","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"048e311cadc6553b2081000a7391048881408bf5","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        raise exception.ShareBackendException("},{"line_number":345,"context_line":"            msg\u003d_(\"Could not read project ID from %s.\") % path)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def create_share(self, context, share, share_server\u003dNone):"},{"line_number":348,"context_line":"        requested_proto \u003d share[\u0027share_proto\u0027].upper()"},{"line_number":349,"context_line":"        if requested_proto !\u003d \u0027LUSTRE\u0027:"},{"line_number":350,"context_line":"            raise exception.InvalidShare("}],"source_content_type":"text/x-python","patch_set":6,"id":"54548a7d_62e60023","line":347,"in_reply_to":"82f07bfd_93193ce3","updated":"2026-08-19 10:33:30.000000000","message":"Okay agreed.","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3bb7228cee207ff09a0df4b45051d0257f1ec099","unresolved":true,"context_lines":[{"line_number":344,"context_line":"        raise exception.ShareBackendException("},{"line_number":345,"context_line":"            msg\u003d_(\"Could not read project ID from %s.\") % path)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def create_share(self, context, share, share_server\u003dNone):"},{"line_number":348,"context_line":"        requested_proto \u003d share[\u0027share_proto\u0027].upper()"},{"line_number":349,"context_line":"        if requested_proto !\u003d \u0027LUSTRE\u0027:"},{"line_number":350,"context_line":"            raise exception.InvalidShare("}],"source_content_type":"text/x-python","patch_set":6,"id":"82f07bfd_93193ce3","line":347,"in_reply_to":"8cce116c_da8a09f3","updated":"2026-08-19 05:22:23.000000000","message":"sure i can add this defensively; it\u0027s an interesting idea.. but since no other driver that i know performs share creation rollbacks, maybe its worth deferring this to a generic solution in the share manager here: https://opendev.org/openstack/manila/src/commit/57a22398a/manila/share/manager.py#L2390-L2422","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"9f8e5b5b205a5e0d946f1792df6c379657585d5e","unresolved":true,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        project_id \u003d None"},{"line_number":385,"context_line":"        if self.private_storage:"},{"line_number":386,"context_line":"            project_id \u003d self.private_storage.get(share_id, \u0027project_id\u0027)"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        if project_id:"},{"line_number":389,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ea076047_47815b55","line":386,"updated":"2026-08-17 10:55:14.000000000","message":"Is there a chance project_id can be missing from private_storage? Should there be a fallback to read it from lfs project?","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3bb7228cee207ff09a0df4b45051d0257f1ec099","unresolved":false,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        project_id \u003d None"},{"line_number":385,"context_line":"        if self.private_storage:"},{"line_number":386,"context_line":"            project_id \u003d self.private_storage.get(share_id, \u0027project_id\u0027)"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        if project_id:"},{"line_number":389,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"df31e642_bb183b9c","line":386,"in_reply_to":"ea076047_47815b55","updated":"2026-08-19 05:22:23.000000000","message":"Hmm, that\u0027s a good idea, specifically for this delete path; in others, i prefer to raise an exception and get it investigated; however, here, we don\u0027t need to force an admin cleanup step. Done","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"9f8e5b5b205a5e0d946f1792df6c379657585d5e","unresolved":true,"context_lines":[{"line_number":435,"context_line":"        usage_kb \u003d self._get_project_usage_kb(project_id)"},{"line_number":436,"context_line":"        new_size_kb \u003d self._size_to_kb(new_size)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        if usage_kb \u003e\u003d new_size_kb:"},{"line_number":439,"context_line":"            raise exception.ShareShrinkingPossibleDataLoss("},{"line_number":440,"context_line":"                share_id\u003dshare_id)"},{"line_number":441,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"e3ddf8fd_0e31b85b","line":438,"updated":"2026-08-17 10:55:14.000000000","message":"The method shrink_share doesn\u0027t allow shrinking the share?","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"048e311cadc6553b2081000a7391048881408bf5","unresolved":true,"context_lines":[{"line_number":435,"context_line":"        usage_kb \u003d self._get_project_usage_kb(project_id)"},{"line_number":436,"context_line":"        new_size_kb \u003d self._size_to_kb(new_size)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        if usage_kb \u003e\u003d new_size_kb:"},{"line_number":439,"context_line":"            raise exception.ShareShrinkingPossibleDataLoss("},{"line_number":440,"context_line":"                share_id\u003dshare_id)"},{"line_number":441,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"b1becec5_bb17af99","line":438,"in_reply_to":"1934a67b_bbbde975","updated":"2026-08-19 10:33:30.000000000","message":"Okay great! Kind of makes sense to call the method resize though. Shrink would always mean \u003c the current size of the share. We can treat this as a nit.","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3bb7228cee207ff09a0df4b45051d0257f1ec099","unresolved":true,"context_lines":[{"line_number":435,"context_line":"        usage_kb \u003d self._get_project_usage_kb(project_id)"},{"line_number":436,"context_line":"        new_size_kb \u003d self._size_to_kb(new_size)"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        if usage_kb \u003e\u003d new_size_kb:"},{"line_number":439,"context_line":"            raise exception.ShareShrinkingPossibleDataLoss("},{"line_number":440,"context_line":"                share_id\u003dshare_id)"},{"line_number":441,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1934a67b_bbbde975","line":438,"in_reply_to":"e3ddf8fd_0e31b85b","updated":"2026-08-19 05:22:23.000000000","message":"yes, by contract. We expect drivers to check for consumed space. Users shouldn\u0027t be able to shrink to a size less than what\u0027s already consumed - this is an expectation from Manila. We even have a scenario test to ensure we\u0027re doing this: \n\nhttps://opendev.org/openstack/manila/src/commit/57a22398a6be9df65c97f017471d6309d3c4f4b5/manila/coordination.py#L129\n\nhttps://opendev.org/openstack/manila-tempest-plugin/src/commit/d753c5552b822754c1d0256fd6713ef3bb58bc27/manila_tempest_tests/tests/scenario/test_share_shrink.py#L92","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"42d6de80bce7573627961d472ecd48bed6cd0959","unresolved":true,"context_lines":[{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        access_to \u003d rule[\u0027access_to\u0027]"},{"line_number":593,"context_line":"        ip \u003d ipaddress.ip_network(access_to, strict\u003dFalse)"},{"line_number":594,"context_line":"        if ip.version \u003d\u003d 6:"},{"line_number":595,"context_line":"            LOG.warning(\"Ignoring IPv6 access rule %s — Lustre NIDs \""},{"line_number":596,"context_line":"                        \"are IPv4-only.\", access_to)"},{"line_number":597,"context_line":"            return"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        nid_range \u003d self._ip_to_nid_range(access_to, nid_type)"},{"line_number":600,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"a4cefb3d_47c0a7c6","line":597,"range":{"start_line":594,"start_character":9,"end_line":597,"end_character":18},"updated":"2026-08-19 00:18:57.000000000","message":"is there a way we can error this out? what will be the status of the ipv6 access rules? If they get into active, it could be misleading","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"55fb2ad8ed469a6bc07edc640d38baba8b776cfd","unresolved":true,"context_lines":[{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        access_to \u003d rule[\u0027access_to\u0027]"},{"line_number":593,"context_line":"        ip \u003d ipaddress.ip_network(access_to, strict\u003dFalse)"},{"line_number":594,"context_line":"        if ip.version \u003d\u003d 6:"},{"line_number":595,"context_line":"            LOG.warning(\"Ignoring IPv6 access rule %s — Lustre NIDs \""},{"line_number":596,"context_line":"                        \"are IPv4-only.\", access_to)"},{"line_number":597,"context_line":"            return"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        nid_range \u003d self._ip_to_nid_range(access_to, nid_type)"},{"line_number":600,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ac6d41fb_fabe9c92","line":597,"range":{"start_line":594,"start_character":9,"end_line":597,"end_character":18},"in_reply_to":"727874f6_bcf7de32","updated":"2026-08-19 22:38:26.000000000","message":"Ack, thank you for explaining. I think it looks good the way it is.","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3bb7228cee207ff09a0df4b45051d0257f1ec099","unresolved":true,"context_lines":[{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        access_to \u003d rule[\u0027access_to\u0027]"},{"line_number":593,"context_line":"        ip \u003d ipaddress.ip_network(access_to, strict\u003dFalse)"},{"line_number":594,"context_line":"        if ip.version \u003d\u003d 6:"},{"line_number":595,"context_line":"            LOG.warning(\"Ignoring IPv6 access rule %s — Lustre NIDs \""},{"line_number":596,"context_line":"                        \"are IPv4-only.\", access_to)"},{"line_number":597,"context_line":"            return"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        nid_range \u003d self._ip_to_nid_range(access_to, nid_type)"},{"line_number":600,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"727874f6_bcf7de32","line":597,"range":{"start_line":594,"start_character":9,"end_line":597,"end_character":18},"in_reply_to":"a4cefb3d_47c0a7c6","updated":"2026-08-19 05:22:23.000000000","message":"I thought about this quite a bit before doing this. \n\nHere\u0027s our current state. \n\nFor NFS, we\u0027ve created a contract in core Manila with a flag that drivers can set \"ipv6_implemented\". If that flag is set to False, we assume the driver doesn\u0027t support IPv6 rules.. but, if the flag is false and the user allows access to IPv6 addresses, the share manager actually filters the rules and sets them to \"active\" - they never reach teh driver. \n\nTHe thought behind that was that users can add rules pre-emptively to infrastructure that\u0027s yet to support IPv6. \n\nI could go make teh share manager behave the same for LUSTRE (it currently only checks for NFS).. or, implement it this way within the driver here. \n\nEither case, the result is the same.. We\u0027d not \"error\" out IPv6 rules.. we need them to be set to \"active\" - we even have tempest tests that unconditionally check for this sort of behavior. \n\nhttps://opendev.org/openstack/manila/src/commit/57a22398a6be9df65c97f017471d6309d3c4f4b5/manila/share/access.py#L406-L412","commit_id":"8b39e7ebfbcfe0908d568c96b71b060836b839cf"}]}
