)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"bc5b5881a6892ef081053dac44c277d1f9dfe3e9","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Fernando Ferraz \u003cfesilva@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2025-04-03 10:50:50 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"NVMe-oF: Fix incorrect check for initiator in connector data"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"NVMe-oF based drivers fail if the `initiator` (from iSCSI devices)"},{"line_number":10,"context_line":"isn\u0027t part of the connector data populated by the os-brick."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"d6212b4a_65b60350","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":8},"updated":"2025-04-03 13:59:08.000000000","message":"NVMe-oF Target:","commit_id":"8200c110c73f6e3acabbd2b5967f7c318e1518c7"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1c6905f0034699845a20c77a7720cb106ae4afc5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Fernando Ferraz \u003cfesilva@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2025-04-03 10:50:50 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"NVMe-oF: Fix incorrect check for initiator in connector data"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"NVMe-oF based drivers fail if the `initiator` (from iSCSI devices)"},{"line_number":10,"context_line":"isn\u0027t part of the connector data populated by the os-brick."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"19a602f2_7586b946","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":8},"in_reply_to":"d6212b4a_65b60350","updated":"2025-04-03 17:25:13.000000000","message":"Done","commit_id":"8200c110c73f6e3acabbd2b5967f7c318e1518c7"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"bc5b5881a6892ef081053dac44c277d1f9dfe3e9","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"NVMe-oF: Fix incorrect check for initiator in connector data"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"NVMe-oF based drivers fail if the `initiator` (from iSCSI devices)"},{"line_number":10,"context_line":"isn\u0027t part of the connector data populated by the os-brick."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch fixes this issue by checking only for NVMe-oF related"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"a62f84ef_af2444f0","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":21},"updated":"2025-04-03 13:59:08.000000000","message":"This should specify that this is about drivers using the Cinder nvmeof target  (i.e. not nvmeof driven by the backend)","commit_id":"8200c110c73f6e3acabbd2b5967f7c318e1518c7"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1c6905f0034699845a20c77a7720cb106ae4afc5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"NVMe-oF: Fix incorrect check for initiator in connector data"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"NVMe-oF based drivers fail if the `initiator` (from iSCSI devices)"},{"line_number":10,"context_line":"isn\u0027t part of the connector data populated by the os-brick."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch fixes this issue by checking only for NVMe-oF related"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"0988ae9c_78ccaf97","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":21},"in_reply_to":"a62f84ef_af2444f0","updated":"2025-04-03 17:25:13.000000000","message":"Done","commit_id":"8200c110c73f6e3acabbd2b5967f7c318e1518c7"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"96fa097bb8bf50dfd1cbaa3a4de7e59aeaa403e3","unresolved":true,"context_lines":[{"line_number":19,"context_line":"fails to gather the `initiator` information and the property isn\u0027t"},{"line_number":20,"context_line":"added to the connector data, exposing the issue."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"This patch fixes this issue by checking only fir NVMe-oF related"},{"line_number":23,"context_line":"fields in the connector properties instead of iSCSI `initiator`"},{"line_number":24,"context_line":"data."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"008f56b8_0564e478","line":22,"range":{"start_line":22,"start_character":45,"end_line":22,"end_character":48},"updated":"2025-04-24 13:07:17.000000000","message":"for","commit_id":"06a70b3aaead0719ed0d16a3bc3d242c42e2f271"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1e5b3c2c1b0936594ba50057c2510a8eafea3ecc","unresolved":false,"context_lines":[{"line_number":19,"context_line":"fails to gather the `initiator` information and the property isn\u0027t"},{"line_number":20,"context_line":"added to the connector data, exposing the issue."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"This patch fixes this issue by checking only fir NVMe-oF related"},{"line_number":23,"context_line":"fields in the connector properties instead of iSCSI `initiator`"},{"line_number":24,"context_line":"data."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"0f685889_a4c66423","line":22,"range":{"start_line":22,"start_character":45,"end_line":22,"end_character":48},"in_reply_to":"008f56b8_0564e478","updated":"2025-04-24 14:19:13.000000000","message":"Done","commit_id":"06a70b3aaead0719ed0d16a3bc3d242c42e2f271"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"8ba8ea0fe4326fe37a5df9d3d0652fe8993e185e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"7741ddb4_5d2e69c9","updated":"2025-04-03 20:16:01.000000000","message":"recheck","commit_id":"37257ef1a019b1632f4f6074985e730c1385fb08"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"77750329afae1d6abea64e1c27cf4dbd99ff35b6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"77fb6580_cfcdb8f8","updated":"2025-04-04 09:53:43.000000000","message":"recheck","commit_id":"37257ef1a019b1632f4f6074985e730c1385fb08"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"ecc36462c19aadfc94991018afce2e5070883a76","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"69e31186_32f2b5a2","updated":"2025-04-07 14:08:46.000000000","message":"recheck devstack-plugin-nfs-tempest-full result in POST_FAILURE","commit_id":"37257ef1a019b1632f4f6074985e730c1385fb08"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c2dbf11fafcc0325ed176c08d396d18bec0be5d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"19d3c4fd_35351201","updated":"2025-04-23 06:50:51.000000000","message":"few suggestions inline","commit_id":"74d0a8c6221dbdb7728fceaf11f388a0fcc7b9d3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4be464177b8ce1e9c509722b98b26e9c3121d115","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"80306faf_02f4b894","updated":"2025-04-23 17:58:32.000000000","message":"sorry i didn\u0027t see the releasenote before, would be good to rephrase it as well with the test change.","commit_id":"fedc62297d5d7f74ca73f99668fa16c9fe97d20f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"d66dec2d12b34e193b973fb044a77ab237bb5fc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"386cef53_432bd584","updated":"2025-04-24 08:18:01.000000000","message":"Thanks for addressing my comments. few nits but overall should be good to merge.","commit_id":"06a70b3aaead0719ed0d16a3bc3d242c42e2f271"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b4c9db7c0c7cc29e0e6124c5b2d5cd28e3ec79e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"243420d8_8dd67d68","updated":"2025-04-24 08:08:56.000000000","message":"recheck devstack-plugin-nfs-tempest-full post_failure","commit_id":"06a70b3aaead0719ed0d16a3bc3d242c42e2f271"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3ae31e380db6a9b46e52f9f669a9d56a13d0eeef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"0b68c606_1c6fd85d","updated":"2025-04-27 02:56:44.000000000","message":"LGTM, Thanks Fernando!","commit_id":"58e5fc6b1b9ca298b3d56cc6ed2c5a41ce8129ce"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"e59462dc0a0fd0928ca753f091ef12b2dd508ed5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"6217a5b9_184d462b","updated":"2025-04-28 14:13:45.000000000","message":"recheck","commit_id":"58e5fc6b1b9ca298b3d56cc6ed2c5a41ce8129ce"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"f87b55377d44e3f1283877aebea57d924311ec8e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"9cfdfbf1_eac80a43","updated":"2025-04-29 00:18:02.000000000","message":"recheck","commit_id":"58e5fc6b1b9ca298b3d56cc6ed2c5a41ce8129ce"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"4621bf1e2ef72166c4fda6274e5a0aac811b3099","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"72173642_3e1efe9b","updated":"2025-04-28 10:07:29.000000000","message":"recheck - intermittent issue in ceph job but seems not related to this change.","commit_id":"58e5fc6b1b9ca298b3d56cc6ed2c5a41ce8129ce"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"2de1915d319206140773dea5f1abdb7550b5a566","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"bbf80f6a_12a20a10","updated":"2025-05-20 15:03:56.000000000","message":"Two +2s and clean CI.","commit_id":"210d488654af0235e1a3bb926e9dff4b2b55d847"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"725465d743dd7fd43e96f7a92b21c1032fc9b2fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"de075e1f_d339594d","updated":"2025-05-21 15:16:37.000000000","message":"recheck","commit_id":"210d488654af0235e1a3bb926e9dff4b2b55d847"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e1165f169b59d3c9850e6eaf2e2ee129b078cb10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"f7d5de5d_b894ad4b","updated":"2025-05-19 18:18:08.000000000","message":"recheck","commit_id":"210d488654af0235e1a3bb926e9dff4b2b55d847"}],"cinder/tests/unit/targets/test_nvmeof_driver.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c2dbf11fafcc0325ed176c08d396d18bec0be5d8","unresolved":true,"context_lines":[{"line_number":189,"context_line":"                                                     mock.sentinel.uuid)"},{"line_number":190,"context_line":"        self.assertEqual(expected_return, res)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    @ddt.data({\u0027nqn\u0027: \u0027nvme-nqn\u0027},"},{"line_number":193,"context_line":"              {\u0027nqn\u0027: \u0027nvme-nqn\u0027, \u0027other\u0027: \u0027other\u0027})"},{"line_number":194,"context_line":"    def test_validate_connector(self, mock_connector):"},{"line_number":195,"context_line":"        self.assertTrue(self.target.validate_connector(mock_connector))"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    @ddt.data({\u0027other\u0027: \u0027other\u0027}, {})"},{"line_number":198,"context_line":"    def test_validate_connector_not_found(self, mock_connector):"},{"line_number":199,"context_line":"        self.assertRaises(exception.InvalidConnectorException,"},{"line_number":200,"context_line":"                          self.target.validate_connector,"},{"line_number":201,"context_line":"                          mock_connector)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test_invalid_target_protocol(self):"},{"line_number":204,"context_line":"        self.configuration.target_protocol \u003d \u0027iser\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"9817c255_44b79aef","line":201,"range":{"start_line":192,"start_character":4,"end_line":201,"end_character":41},"updated":"2025-04-23 06:50:51.000000000","message":"i feel a better set of values would be to validate that the following cases,\n\n1. only nqn - pass\n2. nqn and initiator - pass\n3. only initiator - fail","commit_id":"74d0a8c6221dbdb7728fceaf11f388a0fcc7b9d3"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"e7aab7084d84661e392c61637a96f6ece4dd7f04","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                                                     mock.sentinel.uuid)"},{"line_number":190,"context_line":"        self.assertEqual(expected_return, res)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    @ddt.data({\u0027nqn\u0027: \u0027nvme-nqn\u0027},"},{"line_number":193,"context_line":"              {\u0027nqn\u0027: \u0027nvme-nqn\u0027, \u0027other\u0027: \u0027other\u0027})"},{"line_number":194,"context_line":"    def test_validate_connector(self, mock_connector):"},{"line_number":195,"context_line":"        self.assertTrue(self.target.validate_connector(mock_connector))"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    @ddt.data({\u0027other\u0027: \u0027other\u0027}, {})"},{"line_number":198,"context_line":"    def test_validate_connector_not_found(self, mock_connector):"},{"line_number":199,"context_line":"        self.assertRaises(exception.InvalidConnectorException,"},{"line_number":200,"context_line":"                          self.target.validate_connector,"},{"line_number":201,"context_line":"                          mock_connector)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test_invalid_target_protocol(self):"},{"line_number":204,"context_line":"        self.configuration.target_protocol \u003d \u0027iser\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"7302d94d_f8b5aaf0","line":201,"range":{"start_line":192,"start_character":4,"end_line":201,"end_character":41},"in_reply_to":"9817c255_44b79aef","updated":"2025-04-23 13:39:37.000000000","message":"Done","commit_id":"74d0a8c6221dbdb7728fceaf11f388a0fcc7b9d3"}],"cinder/tests/unit/volume/drivers/test_spdk.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c2dbf11fafcc0325ed176c08d396d18bec0be5d8","unresolved":true,"context_lines":[{"line_number":836,"context_line":"                                                     utils.get_root_helper())"},{"line_number":837,"context_line":"            self.driver.initialize_connection(db_volume, target_connector)"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    @ddt.data(False, True)"},{"line_number":840,"context_line":"    def test_validate_connector(self, validate_connector_output):"},{"line_number":841,"context_line":"        fake_connector_props \u003d {\u0027nqn\u0027: \u0027nvme-nqn\u0027}"},{"line_number":842,"context_line":"        with mock.patch.object("},{"line_number":843,"context_line":"                self.driver.target_driver,"},{"line_number":844,"context_line":"                \"validate_connector\") as mock_validate_connector:"},{"line_number":845,"context_line":"            mock_validate_connector.return_value \u003d validate_connector_output"},{"line_number":846,"context_line":"            result \u003d self.driver.validate_connector(fake_connector_props)"},{"line_number":847,"context_line":"            mock_validate_connector.assert_called_once_with("},{"line_number":848,"context_line":"                fake_connector_props)"},{"line_number":849,"context_line":"            self.assertEqual(validate_connector_output, result)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    def test_terminate_connection(self):"},{"line_number":852,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"053fada9_b041451e","line":849,"range":{"start_line":839,"start_character":4,"end_line":849,"end_character":63},"updated":"2025-04-23 06:50:51.000000000","message":"what is the purpose of this test?\nwe are mocking validate_connector, assigning the return value, calling with our own connector properties and later checking the same details?\nto me this test looks completely mocked and not executing any real part of the code.","commit_id":"74d0a8c6221dbdb7728fceaf11f388a0fcc7b9d3"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"07725c5952fa307e904753c9323c703af482bd2c","unresolved":true,"context_lines":[{"line_number":836,"context_line":"                                                     utils.get_root_helper())"},{"line_number":837,"context_line":"            self.driver.initialize_connection(db_volume, target_connector)"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    @ddt.data(False, True)"},{"line_number":840,"context_line":"    def test_validate_connector(self, validate_connector_output):"},{"line_number":841,"context_line":"        fake_connector_props \u003d {\u0027nqn\u0027: \u0027nvme-nqn\u0027}"},{"line_number":842,"context_line":"        with mock.patch.object("},{"line_number":843,"context_line":"                self.driver.target_driver,"},{"line_number":844,"context_line":"                \"validate_connector\") as mock_validate_connector:"},{"line_number":845,"context_line":"            mock_validate_connector.return_value \u003d validate_connector_output"},{"line_number":846,"context_line":"            result \u003d self.driver.validate_connector(fake_connector_props)"},{"line_number":847,"context_line":"            mock_validate_connector.assert_called_once_with("},{"line_number":848,"context_line":"                fake_connector_props)"},{"line_number":849,"context_line":"            self.assertEqual(validate_connector_output, result)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    def test_terminate_connection(self):"},{"line_number":852,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"c96e0b74_4d8301c5","line":849,"range":{"start_line":839,"start_character":4,"end_line":849,"end_character":63},"in_reply_to":"053fada9_b041451e","updated":"2025-04-23 13:38:26.000000000","message":"In this test, I\u0027m mocking the validate_connector function from the target_driver instance attribute and ensuring it is called from the validate_connector function implemented in SPDKDriver. \n\nThe validate_connector from target_driver is mocked but not its caller:\nDSPDKDriver.validate_connector (Concrete) calls -\u003e SPDKDriver.target_driver.validate_connector (Mocked)   \n\nI understand the test isn\u0027t doing much since the validate_connector in SPDKDriver is just one call to a function of its target_driver attribute, I could remove it entirely if you believe it isn\u0027t adding much value.","commit_id":"74d0a8c6221dbdb7728fceaf11f388a0fcc7b9d3"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"90aa4799a1dcf179c59293c1f899b76fbc5e7ac8","unresolved":false,"context_lines":[{"line_number":836,"context_line":"                                                     utils.get_root_helper())"},{"line_number":837,"context_line":"            self.driver.initialize_connection(db_volume, target_connector)"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    @ddt.data(False, True)"},{"line_number":840,"context_line":"    def test_validate_connector(self, validate_connector_output):"},{"line_number":841,"context_line":"        fake_connector_props \u003d {\u0027nqn\u0027: \u0027nvme-nqn\u0027}"},{"line_number":842,"context_line":"        with mock.patch.object("},{"line_number":843,"context_line":"                self.driver.target_driver,"},{"line_number":844,"context_line":"                \"validate_connector\") as mock_validate_connector:"},{"line_number":845,"context_line":"            mock_validate_connector.return_value \u003d validate_connector_output"},{"line_number":846,"context_line":"            result \u003d self.driver.validate_connector(fake_connector_props)"},{"line_number":847,"context_line":"            mock_validate_connector.assert_called_once_with("},{"line_number":848,"context_line":"                fake_connector_props)"},{"line_number":849,"context_line":"            self.assertEqual(validate_connector_output, result)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    def test_terminate_connection(self):"},{"line_number":852,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"e6e20785_3b0b8870","line":849,"range":{"start_line":839,"start_character":4,"end_line":849,"end_character":63},"in_reply_to":"15380b3e_aceb01a7","updated":"2025-04-23 22:22:43.000000000","message":"I\u0027m good with reverting to the orinal test. I reverted the unit tests to its original but changed the properties with a fake \u0027nqn\u0027 as suggested.","commit_id":"74d0a8c6221dbdb7728fceaf11f388a0fcc7b9d3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4be464177b8ce1e9c509722b98b26e9c3121d115","unresolved":true,"context_lines":[{"line_number":836,"context_line":"                                                     utils.get_root_helper())"},{"line_number":837,"context_line":"            self.driver.initialize_connection(db_volume, target_connector)"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    @ddt.data(False, True)"},{"line_number":840,"context_line":"    def test_validate_connector(self, validate_connector_output):"},{"line_number":841,"context_line":"        fake_connector_props \u003d {\u0027nqn\u0027: \u0027nvme-nqn\u0027}"},{"line_number":842,"context_line":"        with mock.patch.object("},{"line_number":843,"context_line":"                self.driver.target_driver,"},{"line_number":844,"context_line":"                \"validate_connector\") as mock_validate_connector:"},{"line_number":845,"context_line":"            mock_validate_connector.return_value \u003d validate_connector_output"},{"line_number":846,"context_line":"            result \u003d self.driver.validate_connector(fake_connector_props)"},{"line_number":847,"context_line":"            mock_validate_connector.assert_called_once_with("},{"line_number":848,"context_line":"                fake_connector_props)"},{"line_number":849,"context_line":"            self.assertEqual(validate_connector_output, result)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    def test_terminate_connection(self):"},{"line_number":852,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"15380b3e_aceb01a7","line":849,"range":{"start_line":839,"start_character":4,"end_line":849,"end_character":63},"in_reply_to":"c96e0b74_4d8301c5","updated":"2025-04-23 17:58:32.000000000","message":"I understand the workflow, I\u0027m just saying that this test is analogous to directly calling a mocked method and checking if it\u0027s called with the right arguments and return value, which personally, i don\u0027t feel is adding much value here.\nIt would be better to restore the original method and changing the connector passed to at least verify that the spdk driver calls the right validate_connector present in the nvmeof target.\n\n    def test_validate_connector(self):\n        mock_connector \u003d {\u0027nqn\u0027: \u0027fake_nqn\u0027}\n        self.assertTrue(self.driver.validate_connector(mock_connector))","commit_id":"74d0a8c6221dbdb7728fceaf11f388a0fcc7b9d3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b4c9db7c0c7cc29e0e6124c5b2d5cd28e3ec79e1","unresolved":true,"context_lines":[{"line_number":836,"context_line":"                                                     utils.get_root_helper())"},{"line_number":837,"context_line":"            self.driver.initialize_connection(db_volume, target_connector)"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    @ddt.data(False, True)"},{"line_number":840,"context_line":"    def test_validate_connector(self, validate_connector_output):"},{"line_number":841,"context_line":"        mock_connector \u003d {\u0027nqn\u0027: \u0027fake-nqn\u0027}"},{"line_number":842,"context_line":"        self.assertTrue(self.driver.validate_connector(mock_connector))"}],"source_content_type":"text/x-python","patch_set":16,"id":"a7e5b088_e9b8ed90","line":839,"range":{"start_line":839,"start_character":0,"end_line":839,"end_character":26},"updated":"2025-04-24 08:08:56.000000000","message":"nit: don\u0027t need this anymore","commit_id":"06a70b3aaead0719ed0d16a3bc3d242c42e2f271"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"2433c90487446447421ee0ebe82ba8637780aa12","unresolved":false,"context_lines":[{"line_number":836,"context_line":"                                                     utils.get_root_helper())"},{"line_number":837,"context_line":"            self.driver.initialize_connection(db_volume, target_connector)"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    @ddt.data(False, True)"},{"line_number":840,"context_line":"    def test_validate_connector(self, validate_connector_output):"},{"line_number":841,"context_line":"        mock_connector \u003d {\u0027nqn\u0027: \u0027fake-nqn\u0027}"},{"line_number":842,"context_line":"        self.assertTrue(self.driver.validate_connector(mock_connector))"}],"source_content_type":"text/x-python","patch_set":16,"id":"dbe8b979_1a98577d","line":839,"range":{"start_line":839,"start_character":0,"end_line":839,"end_character":26},"in_reply_to":"a7e5b088_e9b8ed90","updated":"2025-04-24 14:18:10.000000000","message":"Oh, my bad. Mock and references to ddt have been removed.","commit_id":"06a70b3aaead0719ed0d16a3bc3d242c42e2f271"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"fabb34678b5d4748db7842f1dbfb432bc84aa612","unresolved":true,"context_lines":[{"line_number":836,"context_line":"                                                     utils.get_root_helper())"},{"line_number":837,"context_line":"            self.driver.initialize_connection(db_volume, target_connector)"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    @ddt.data(False, True)"},{"line_number":840,"context_line":"    def test_validate_connector(self, validate_connector_output):"},{"line_number":841,"context_line":"        mock_connector \u003d {\u0027nqn\u0027: \u0027fake-nqn\u0027}"},{"line_number":842,"context_line":"        self.assertTrue(self.driver.validate_connector(mock_connector))"}],"source_content_type":"text/x-python","patch_set":16,"id":"517105f4_f067ad14","line":839,"range":{"start_line":839,"start_character":0,"end_line":839,"end_character":26},"in_reply_to":"a7e5b088_e9b8ed90","updated":"2025-04-24 13:06:40.000000000","message":"We should remove this, looks good otherwise.","commit_id":"06a70b3aaead0719ed0d16a3bc3d242c42e2f271"}],"cinder/volume/targets/nvmeof.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"027e1d685ea990635f629389d61d15581996c03c","unresolved":true,"context_lines":[{"line_number":219,"context_line":"        return self.delete_nvmeof_target(volume)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def validate_connector(self, connector):"},{"line_number":222,"context_line":"        expected_any \u003d (\u0027nqn\u0027, \u0027nvme_hostid\u0027, \u0027system uuid\u0027)"},{"line_number":223,"context_line":"        if not any(prop for prop in connector if prop in expected_any):"},{"line_number":224,"context_line":"            LOG.error(\u0027None of the NVMe expected connector properties were \u0027"},{"line_number":225,"context_line":"                      \u0027found.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"f123735a_cf07542a","line":222,"updated":"2025-04-02 14:00:41.000000000","message":"Is system uuid actually a hard requirement for all nvmeof connections?","commit_id":"be70a04a542c695f6290ad2773a4d03b6e353670"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1c6905f0034699845a20c77a7720cb106ae4afc5","unresolved":true,"context_lines":[{"line_number":219,"context_line":"        return self.delete_nvmeof_target(volume)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def validate_connector(self, connector):"},{"line_number":222,"context_line":"        expected_any \u003d (\u0027nqn\u0027, \u0027nvme_hostid\u0027, \u0027system uuid\u0027)"},{"line_number":223,"context_line":"        if not any(prop for prop in connector if prop in expected_any):"},{"line_number":224,"context_line":"            LOG.error(\u0027None of the NVMe expected connector properties were \u0027"},{"line_number":225,"context_line":"                      \u0027found.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9483fe49_193c4103","line":222,"in_reply_to":"8061d890_6c6f24f8","updated":"2025-04-03 17:25:13.000000000","message":"I changed the `validate_connector()` function to check only for the \u0027nqn\u0027 property, which is required by `are_same_connector()`.","commit_id":"be70a04a542c695f6290ad2773a4d03b6e353670"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"67f4b76111d3d2c489bc27e9f7c052fe59ee49ee","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        return self.delete_nvmeof_target(volume)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def validate_connector(self, connector):"},{"line_number":222,"context_line":"        expected_any \u003d (\u0027nqn\u0027, \u0027nvme_hostid\u0027, \u0027system uuid\u0027)"},{"line_number":223,"context_line":"        if not any(prop for prop in connector if prop in expected_any):"},{"line_number":224,"context_line":"            LOG.error(\u0027None of the NVMe expected connector properties were \u0027"},{"line_number":225,"context_line":"                      \u0027found.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"8cb99f7e_f249537f","line":222,"in_reply_to":"9483fe49_193c4103","updated":"2025-04-15 11:44:15.000000000","message":"Done","commit_id":"be70a04a542c695f6290ad2773a4d03b6e353670"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"4261d9587c8e19ee6ad4dde2afacbb0337d3aa51","unresolved":true,"context_lines":[{"line_number":219,"context_line":"        return self.delete_nvmeof_target(volume)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def validate_connector(self, connector):"},{"line_number":222,"context_line":"        expected_any \u003d (\u0027nqn\u0027, \u0027nvme_hostid\u0027, \u0027system uuid\u0027)"},{"line_number":223,"context_line":"        if not any(prop for prop in connector if prop in expected_any):"},{"line_number":224,"context_line":"            LOG.error(\u0027None of the NVMe expected connector properties were \u0027"},{"line_number":225,"context_line":"                      \u0027found.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"8061d890_6c6f24f8","line":222,"in_reply_to":"f123735a_cf07542a","updated":"2025-04-02 16:14:09.000000000","message":"No. I realized that none of the fields provided by the connector are hard requirements for the functions create_export() or initialize_connection() that were supposed to use it. The only information used [1] from the connector properties is the \u0027host\u0027, which is generic and shared among all connectors. The idea for checking the \u0027nqn\u0027, \u0027nvme_hostid\u0027, \u0027system uuid\u0027 was to validate if the nvmeof connector was able to report any of its nvme-specific fields, tho the info itself isn\u0027t a requirement.  \n\nWe could also consider removing the check entirely if we decide that maintaining this validation can lead to more problems in the future.\n\n[1] https://github.com/openstack/cinder/blob/a451acf357c0cf49e132a408dcbd51f31f6ffc37/cinder/volume/targets/nvmet.py#L303","commit_id":"be70a04a542c695f6290ad2773a4d03b6e353670"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c2dbf11fafcc0325ed176c08d396d18bec0be5d8","unresolved":true,"context_lines":[{"line_number":221,"context_line":"    def validate_connector(self, connector):"},{"line_number":222,"context_line":"        required \u003d \u0027nqn\u0027"},{"line_number":223,"context_line":"        if required not in connector:"},{"line_number":224,"context_line":"            LOG.error(\u0027Required information %(required)s not found in\u0027"},{"line_number":225,"context_line":"                      \u0027connector data.\u0027, {\"required\": required})"},{"line_number":226,"context_line":"            raise exception.InvalidConnectorException("},{"line_number":227,"context_line":"                missing\u003drequired)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7d55db8e_8dd8dd6d","line":224,"range":{"start_line":224,"start_character":69,"end_line":224,"end_character":70},"updated":"2025-04-23 06:50:51.000000000","message":"need a space here otherwise it will log \"inconnector\"","commit_id":"74d0a8c6221dbdb7728fceaf11f388a0fcc7b9d3"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"e7aab7084d84661e392c61637a96f6ece4dd7f04","unresolved":false,"context_lines":[{"line_number":221,"context_line":"    def validate_connector(self, connector):"},{"line_number":222,"context_line":"        required \u003d \u0027nqn\u0027"},{"line_number":223,"context_line":"        if required not in connector:"},{"line_number":224,"context_line":"            LOG.error(\u0027Required information %(required)s not found in\u0027"},{"line_number":225,"context_line":"                      \u0027connector data.\u0027, {\"required\": required})"},{"line_number":226,"context_line":"            raise exception.InvalidConnectorException("},{"line_number":227,"context_line":"                missing\u003drequired)"}],"source_content_type":"text/x-python","patch_set":14,"id":"87e92a32_cefdf12a","line":224,"range":{"start_line":224,"start_character":69,"end_line":224,"end_character":70},"in_reply_to":"7d55db8e_8dd8dd6d","updated":"2025-04-23 13:39:37.000000000","message":"Done","commit_id":"74d0a8c6221dbdb7728fceaf11f388a0fcc7b9d3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"d66dec2d12b34e193b973fb044a77ab237bb5fc8","unresolved":true,"context_lines":[{"line_number":219,"context_line":"        return self.delete_nvmeof_target(volume)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def validate_connector(self, connector):"},{"line_number":222,"context_line":"        required \u003d \u0027nqn\u0027"},{"line_number":223,"context_line":"        if required not in connector:"},{"line_number":224,"context_line":"            LOG.error(\u0027Required information %(required)s not found in \u0027"},{"line_number":225,"context_line":"                      \u0027connector data.\u0027, {\"required\": required})"}],"source_content_type":"text/x-python","patch_set":16,"id":"64c2c0e6_acbf63a6","line":222,"range":{"start_line":222,"start_character":8,"end_line":222,"end_character":24},"updated":"2025-04-24 08:18:01.000000000","message":"we either get the nqn from hostnqn file or generate it[1] so it\u0027s really less likely that nqn will not be present.\n\nInterestingly i see nowhere in the nvmeof or nvmet target driver where nqn is needed to map the volume but the \u0027host\u0027 property is required in case of shared targets[2] but it\u0027s a generic property irrespective of the connector so shouldn\u0027t validate it here.\n\n[1] https://github.com/openstack/os-brick/blob/99240e4998488deb830e4f0c7a7289286a32127d/os_brick/utils.py#L236-L241\n[2] https://github.com/openstack/cinder/blob/a0b8f270e60606cf5ae1fe97fd1abe6030bb10c9/cinder/volume/targets/nvmet.py#L303","commit_id":"06a70b3aaead0719ed0d16a3bc3d242c42e2f271"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"2433c90487446447421ee0ebe82ba8637780aa12","unresolved":true,"context_lines":[{"line_number":219,"context_line":"        return self.delete_nvmeof_target(volume)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def validate_connector(self, connector):"},{"line_number":222,"context_line":"        required \u003d \u0027nqn\u0027"},{"line_number":223,"context_line":"        if required not in connector:"},{"line_number":224,"context_line":"            LOG.error(\u0027Required information %(required)s not found in \u0027"},{"line_number":225,"context_line":"                      \u0027connector data.\u0027, {\"required\": required})"}],"source_content_type":"text/x-python","patch_set":16,"id":"43ee3771_d5ae1951","line":222,"range":{"start_line":222,"start_character":8,"end_line":222,"end_character":24},"in_reply_to":"64c2c0e6_acbf63a6","updated":"2025-04-24 14:18:10.000000000","message":"Correct, but since `host` is a generic property that is not always required, and I couldn\u0027t see how the `host` settings might not get into the connector properties dict, I decided to keep it simple and check only for the `nqn` at this point.","commit_id":"06a70b3aaead0719ed0d16a3bc3d242c42e2f271"}],"releasenotes/notes/bug-2105961-fix-nvmeof-fail-due-to-initiator-property-missing-db8315541f94447f.yaml":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"640fbbdb6f8fee7e4053206b8fae8d1692048b17","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add normal bug fixes here, or remove this section.  All of the list items"},{"line_number":5,"context_line":"    in this section are combined when the release notes are rendered, so the"},{"line_number":6,"context_line":"    text needs to be worded so that it does not depend on any information only"},{"line_number":7,"context_line":"    available in another section, such as the prelude. This may mean repeating"},{"line_number":8,"context_line":"    some details.  Examples for core code fixes, and driver fixes:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    `Bug #2105961 \u003chttps://bugs.launchpad.net/cinder/+bug/2105961\u003e`_: Fixed"},{"line_number":11,"context_line":"    issue causing NVMe-oF based drivers to fail when connector ``initiator``"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"c9b01d01_7c118bd2","line":8,"range":{"start_line":4,"start_character":0,"end_line":8,"end_character":66},"updated":"2025-04-21 19:01:23.000000000","message":"Need to remove this.","commit_id":"37257ef1a019b1632f4f6074985e730c1385fb08"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"6a454ce4c890eb146a02c0c74b01063d5ec844e0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add normal bug fixes here, or remove this section.  All of the list items"},{"line_number":5,"context_line":"    in this section are combined when the release notes are rendered, so the"},{"line_number":6,"context_line":"    text needs to be worded so that it does not depend on any information only"},{"line_number":7,"context_line":"    available in another section, such as the prelude. This may mean repeating"},{"line_number":8,"context_line":"    some details.  Examples for core code fixes, and driver fixes:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    `Bug #2105961 \u003chttps://bugs.launchpad.net/cinder/+bug/2105961\u003e`_: Fixed"},{"line_number":11,"context_line":"    issue causing NVMe-oF based drivers to fail when connector ``initiator``"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5bd9be53_77d0a4c2","line":8,"range":{"start_line":4,"start_character":0,"end_line":8,"end_character":66},"in_reply_to":"c9b01d01_7c118bd2","updated":"2025-04-22 18:41:22.000000000","message":"Done","commit_id":"37257ef1a019b1632f4f6074985e730c1385fb08"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"640fbbdb6f8fee7e4053206b8fae8d1692048b17","unresolved":true,"context_lines":[{"line_number":10,"context_line":"    `Bug #2105961 \u003chttps://bugs.launchpad.net/cinder/+bug/2105961\u003e`_: Fixed"},{"line_number":11,"context_line":"    issue causing NVMe-oF based drivers to fail when connector ``initiator``"},{"line_number":12,"context_line":"    data doesn\u0027t exist."},{"line_number":13,"context_line":"  - |"},{"line_number":14,"context_line":"    Brocade driver `bug #1866860"},{"line_number":15,"context_line":"    \u003chttps://bugs.launchpad.net/cinder/+bug/1889758\u003e`_: Fixed"},{"line_number":16,"context_line":"    ``AttributeError`` when using ``REST_HTTP`` or ``REST_HTTPS`` as the"},{"line_number":17,"context_line":"    ``fc_southbound_protocol`` option and an exception is raised by the"},{"line_number":18,"context_line":"    client."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"e1cb7c55_1cbc6ca3","line":18,"range":{"start_line":13,"start_character":0,"end_line":18,"end_character":11},"updated":"2025-04-21 19:01:23.000000000","message":"^","commit_id":"37257ef1a019b1632f4f6074985e730c1385fb08"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"6a454ce4c890eb146a02c0c74b01063d5ec844e0","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    `Bug #2105961 \u003chttps://bugs.launchpad.net/cinder/+bug/2105961\u003e`_: Fixed"},{"line_number":11,"context_line":"    issue causing NVMe-oF based drivers to fail when connector ``initiator``"},{"line_number":12,"context_line":"    data doesn\u0027t exist."},{"line_number":13,"context_line":"  - |"},{"line_number":14,"context_line":"    Brocade driver `bug #1866860"},{"line_number":15,"context_line":"    \u003chttps://bugs.launchpad.net/cinder/+bug/1889758\u003e`_: Fixed"},{"line_number":16,"context_line":"    ``AttributeError`` when using ``REST_HTTP`` or ``REST_HTTPS`` as the"},{"line_number":17,"context_line":"    ``fc_southbound_protocol`` option and an exception is raised by the"},{"line_number":18,"context_line":"    client."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"59e7be51_83613811","line":18,"range":{"start_line":13,"start_character":0,"end_line":18,"end_character":11},"in_reply_to":"e1cb7c55_1cbc6ca3","updated":"2025-04-22 18:41:22.000000000","message":"Done","commit_id":"37257ef1a019b1632f4f6074985e730c1385fb08"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4be464177b8ce1e9c509722b98b26e9c3121d115","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #2105961 \u003chttps://bugs.launchpad.net/cinder/+bug/2105961\u003e`_: Fixed"},{"line_number":5,"context_line":"    issue causing drivers based on the generic NVMe-oF target to fail when"},{"line_number":6,"context_line":"    connector ``initiator`` data doesn\u0027t exist."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"16722cf6_07c5afe9","line":6,"range":{"start_line":4,"start_character":70,"end_line":6,"end_character":47},"updated":"2025-04-23 17:58:32.000000000","message":"Probably we can rephrase this as,\n\nFixed issue in target NVMe-oF driver to validate ``nqn`` property (NVMe-oF) instead of ``initiator`` property (iSCSI) which caused attachment failures in non-iSCSI environments.","commit_id":"fedc62297d5d7f74ca73f99668fa16c9fe97d20f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"89f229812ae50f36d8be5155119969a60cfb5f66","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #2105961 \u003chttps://bugs.launchpad.net/cinder/+bug/2105961\u003e`_: Fixed"},{"line_number":5,"context_line":"    issue causing drivers based on the generic NVMe-oF target to fail when"},{"line_number":6,"context_line":"    connector ``initiator`` data doesn\u0027t exist."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"c48c996f_76585e44","line":6,"range":{"start_line":4,"start_character":70,"end_line":6,"end_character":47},"in_reply_to":"16722cf6_07c5afe9","updated":"2025-04-23 18:04:53.000000000","message":"or maybe, but either is fine\n\nFixed issue in NVMe-oF target driver to validate `nqn` property (NVMe-oF) instead of `initiator` property (iSCSI) in the connector which caused attachment failures in non-iSCSI environments.","commit_id":"fedc62297d5d7f74ca73f99668fa16c9fe97d20f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"90aa4799a1dcf179c59293c1f899b76fbc5e7ac8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #2105961 \u003chttps://bugs.launchpad.net/cinder/+bug/2105961\u003e`_: Fixed"},{"line_number":5,"context_line":"    issue causing drivers based on the generic NVMe-oF target to fail when"},{"line_number":6,"context_line":"    connector ``initiator`` data doesn\u0027t exist."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"a7bc9b8a_7800f1e5","line":6,"range":{"start_line":4,"start_character":70,"end_line":6,"end_character":47},"in_reply_to":"c48c996f_76585e44","updated":"2025-04-23 22:22:43.000000000","message":"Changed the reno with suggestion provided.","commit_id":"fedc62297d5d7f74ca73f99668fa16c9fe97d20f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b4c9db7c0c7cc29e0e6124c5b2d5cd28e3ec79e1","unresolved":true,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #2105961 \u003chttps://bugs.launchpad.net/cinder/+bug/2105961\u003e`_: Fixed"},{"line_number":5,"context_line":"    issue in NVMe-oF target driver to validate nqn property (NVMe-oF)"},{"line_number":6,"context_line":"    instead of initiator property (iSCSI) in the connector which caused"},{"line_number":7,"context_line":"    attachment failures in non-iSCSI environments."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"7c7c7dfc_21d576d4","line":5,"range":{"start_line":5,"start_character":47,"end_line":5,"end_character":50},"updated":"2025-04-24 08:08:56.000000000","message":"nit: i think the double inverted quotes i added got parsed in the comment","commit_id":"06a70b3aaead0719ed0d16a3bc3d242c42e2f271"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"2433c90487446447421ee0ebe82ba8637780aa12","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #2105961 \u003chttps://bugs.launchpad.net/cinder/+bug/2105961\u003e`_: Fixed"},{"line_number":5,"context_line":"    issue in NVMe-oF target driver to validate nqn property (NVMe-oF)"},{"line_number":6,"context_line":"    instead of initiator property (iSCSI) in the connector which caused"},{"line_number":7,"context_line":"    attachment failures in non-iSCSI environments."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"cbc12916_99a824b1","line":5,"range":{"start_line":5,"start_character":47,"end_line":5,"end_character":50},"in_reply_to":"7c7c7dfc_21d576d4","updated":"2025-04-24 14:18:10.000000000","message":"I added the quotes back.","commit_id":"06a70b3aaead0719ed0d16a3bc3d242c42e2f271"}]}
