)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"16aecb1e7c976c6ade7e2a470cf43de6fffbd65d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"35304682_79f7d1f1","updated":"2026-07-01 19:31:49.000000000","message":"LGTM. Was this tested functionally for regressions?","commit_id":"70726771bd1460ce324c035a2e12e7446293bd1f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"7ba09313cb15c73ea5ee52a89c94f35e0c21e7da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"dffcf341_880b868d","updated":"2026-06-29 15:49:16.000000000","message":"Run-NetApp CI","commit_id":"70726771bd1460ce324c035a2e12e7446293bd1f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"8342b7d0e644e11cd293fe4e166906b847e04e60","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"985d61b9_7dbe266f","updated":"2026-07-31 07:31:32.000000000","message":"Thanks Amit","commit_id":"70726771bd1460ce324c035a2e12e7446293bd1f"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"3c6cbf39911b234158b16893aea2af6f67d97d0b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9c44045b_70bcf177","updated":"2026-07-30 08:08:02.000000000","message":"overall lgtm, refresh false indeed not required in other places from where `_get_lun_from_table` is called, like create_export, extend_vol, create_snapshot.\n\na suggestion on same update for dataontap/nvme_library.py follows same pattern, though its not part of this bug-fix.\nand a ask for test","commit_id":"70726771bd1460ce324c035a2e12e7446293bd1f"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/test_block_base.py":[{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"3c6cbf39911b234158b16893aea2af6f67d97d0b","unresolved":true,"context_lines":[{"line_number":2691,"context_line":"                          self.library._get_lun_from_table,"},{"line_number":2692,"context_line":"                          lun_name, refresh\u003dFalse)"},{"line_number":2693,"context_line":""},{"line_number":2694,"context_line":"        self.zapi_client.get_lun_list.assert_not_called()"}],"source_content_type":"text/x-python","patch_set":2,"id":"28eb0c0a_bbd0ee68","line":2694,"updated":"2026-07-30 08:08:02.000000000","message":"can you also add a test case where the LUN isn\u0027t found in the cache and _get_lun_attr returns None","commit_id":"70726771bd1460ce324c035a2e12e7446293bd1f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"8342b7d0e644e11cd293fe4e166906b847e04e60","unresolved":true,"context_lines":[{"line_number":2691,"context_line":"                          self.library._get_lun_from_table,"},{"line_number":2692,"context_line":"                          lun_name, refresh\u003dFalse)"},{"line_number":2693,"context_line":""},{"line_number":2694,"context_line":"        self.zapi_client.get_lun_list.assert_not_called()"}],"source_content_type":"text/x-python","patch_set":2,"id":"83a81ebb_855ed77b","line":2694,"in_reply_to":"28eb0c0a_bbd0ee68","updated":"2026-07-31 07:31:32.000000000","message":"If the LUN isn\u0027t found in the cache then we raise VolumeNotFound error as we\u0027ve asserted on L#2690\n_get_lun_attr method only performs a getattr on the returned LUN object (\u0027handle\u0027 attribute here) without any exception handling\nThe main handling is done in the volume manager[1]\n\n[1] https://github.com/openstack/cinder/blob/master/cinder/volume/manager.py#L599-L602","commit_id":"70726771bd1460ce324c035a2e12e7446293bd1f"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"08edf11ea07e246740e76134d1d7d574ddad3b3f","unresolved":true,"context_lines":[{"line_number":2691,"context_line":"                          self.library._get_lun_from_table,"},{"line_number":2692,"context_line":"                          lun_name, refresh\u003dFalse)"},{"line_number":2693,"context_line":""},{"line_number":2694,"context_line":"        self.zapi_client.get_lun_list.assert_not_called()"}],"source_content_type":"text/x-python","patch_set":2,"id":"d44fa7ba_d227be50","line":2694,"in_reply_to":"83a81ebb_855ed77b","updated":"2026-07-31 11:46:27.000000000","message":"_get_lun_attr does catch VolumeNotFound L715-L717 and returns None - it doesn\u0027t re-raise, so excetion never reaches the volume manager\n\nasked test is to cover ensure_export L347 returning `{\u0027provider_location\u0027: None}` when the LUN isn\u0027t in cache","commit_id":"70726771bd1460ce324c035a2e12e7446293bd1f"}],"cinder/volume/drivers/netapp/dataontap/nvme_library.py":[{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"3c6cbf39911b234158b16893aea2af6f67d97d0b","unresolved":true,"context_lines":[{"line_number":332,"context_line":"            LOG.warning(\"No entry in namespace table for volume/snapshot\""},{"line_number":333,"context_line":"                        \" %(name)s.\", {\u0027name\u0027: namespace_name})"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def ensure_export(self, context, volume):"},{"line_number":336,"context_line":"        \"\"\"Driver entry point to get the export info for an existing volume.\"\"\""},{"line_number":337,"context_line":"        handle \u003d self._get_namespace_attr(volume[\u0027name\u0027], \u0027handle\u0027)"},{"line_number":338,"context_line":"        return {\u0027provider_location\u0027: handle}"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def create_export(self, context, volume):"},{"line_number":341,"context_line":"        \"\"\"Driver entry point to get the export info for a new volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"2d4fccdd_7608d947","line":338,"range":{"start_line":335,"start_character":4,"end_line":338,"end_character":44},"updated":"2026-07-30 08:08:02.000000000","message":"not part of bug, but should we update this too ?","commit_id":"70726771bd1460ce324c035a2e12e7446293bd1f"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"ddeb928657d3dfa62c42254e7fd6f543227235e0","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            LOG.warning(\"No entry in namespace table for volume/snapshot\""},{"line_number":333,"context_line":"                        \" %(name)s.\", {\u0027name\u0027: namespace_name})"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def ensure_export(self, context, volume):"},{"line_number":336,"context_line":"        \"\"\"Driver entry point to get the export info for an existing volume.\"\"\""},{"line_number":337,"context_line":"        handle \u003d self._get_namespace_attr(volume[\u0027name\u0027], \u0027handle\u0027)"},{"line_number":338,"context_line":"        return {\u0027provider_location\u0027: handle}"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def create_export(self, context, volume):"},{"line_number":341,"context_line":"        \"\"\"Driver entry point to get the export info for a new volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"8e50efdb_875e80d8","line":338,"range":{"start_line":335,"start_character":4,"end_line":338,"end_character":44},"in_reply_to":"2d4fccdd_7608d947","updated":"2026-07-31 11:46:55.000000000","message":"Done","commit_id":"70726771bd1460ce324c035a2e12e7446293bd1f"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"3c6cbf39911b234158b16893aea2af6f67d97d0b","unresolved":true,"context_lines":[{"line_number":475,"context_line":"            if namespace is None:"},{"line_number":476,"context_line":"                raise exception.VolumeNotFound(volume_id\u003dname)"},{"line_number":477,"context_line":"        return namespace"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    def _get_namespace_attr(self, name, attr):"},{"line_number":480,"context_line":"        \"\"\"Get the namespace attribute if found else None.\"\"\""},{"line_number":481,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"cd374a16_a1d00a31","line":478,"updated":"2026-07-30 08:08:02.000000000","message":"^^","commit_id":"70726771bd1460ce324c035a2e12e7446293bd1f"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"ddeb928657d3dfa62c42254e7fd6f543227235e0","unresolved":false,"context_lines":[{"line_number":475,"context_line":"            if namespace is None:"},{"line_number":476,"context_line":"                raise exception.VolumeNotFound(volume_id\u003dname)"},{"line_number":477,"context_line":"        return namespace"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    def _get_namespace_attr(self, name, attr):"},{"line_number":480,"context_line":"        \"\"\"Get the namespace attribute if found else None.\"\"\""},{"line_number":481,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"8386db4c_73d904d9","line":478,"in_reply_to":"3149dd3d_6e9211da","updated":"2026-07-31 11:46:55.000000000","message":"Acknowledged","commit_id":"70726771bd1460ce324c035a2e12e7446293bd1f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"8342b7d0e644e11cd293fe4e166906b847e04e60","unresolved":true,"context_lines":[{"line_number":475,"context_line":"            if namespace is None:"},{"line_number":476,"context_line":"                raise exception.VolumeNotFound(volume_id\u003dname)"},{"line_number":477,"context_line":"        return namespace"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    def _get_namespace_attr(self, name, attr):"},{"line_number":480,"context_line":"        \"\"\"Get the namespace attribute if found else None.\"\"\""},{"line_number":481,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3149dd3d_6e9211da","line":478,"in_reply_to":"cd374a16_a1d00a31","updated":"2026-07-31 07:31:32.000000000","message":"Good point. Though I\u0027ve only seen the issue currently happen in iSCSI and FC environments and that\u0027s my focus currently.\nNetApp driver maintainer team can followup on this if they see the issue in case of NVMe but I would refrain from modifying things out of the bug domain since I\u0027m not the active maintainer of the driver.","commit_id":"70726771bd1460ce324c035a2e12e7446293bd1f"}]}
