)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"d0ef1841bc8bcd0d11c1ce073b63ed819be9d0fd","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add multipath enhancement to Storwize iSCSI driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add multipath enhancement to Storwize iSCSI driver."},{"line_number":10,"context_line":"target portals, iqns and luns will be returned in"},{"line_number":11,"context_line":"initialize_connection if multipath is being used."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a122d0e_11f2cd6f","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":51},"updated":"2016-04-21 21:06:28.000000000","message":"The detailed description repeats the short description. Better change that.","commit_id":"fe140421e5280efb128e4f8041c8391603e7151f"}],"cinder/tests/unit/volume/drivers/ibm/test_storwize_svc.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":2036,"context_line":"            host \u003d self.iscsi_driver._helpers.get_host_from_connector(conn)"},{"line_number":2037,"context_line":"        self.assertIsNone(host)"},{"line_number":2038,"context_line":""},{"line_number":2039,"context_line":"    def test_storwize_initialize_iscsi_connection(self):"},{"line_number":2040,"context_line":"        # Test the return value for _get_iscsi_properties"},{"line_number":2041,"context_line":""},{"line_number":2042,"context_line":"        connector \u003d {\u0027host\u0027: \u0027storwize-svc-host\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_f2dbc84d","line":2039,"updated":"2016-11-04 09:18:58.000000000","message":"Each method should be testing only 1 case, so we should have 2 different tests, one for single path and another for multipath.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"b36312c21167b9ca07ac78dcdec96fe85a395092","unresolved":false,"context_lines":[{"line_number":2036,"context_line":"            host \u003d self.iscsi_driver._helpers.get_host_from_connector(conn)"},{"line_number":2037,"context_line":"        self.assertIsNone(host)"},{"line_number":2038,"context_line":""},{"line_number":2039,"context_line":"    def test_storwize_initialize_iscsi_connection(self):"},{"line_number":2040,"context_line":"        # Test the return value for _get_iscsi_properties"},{"line_number":2041,"context_line":""},{"line_number":2042,"context_line":"        connector \u003d {\u0027host\u0027: \u0027storwize-svc-host\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_dd0b3b7c","line":2039,"in_reply_to":"ba5da102_f2dbc84d","updated":"2016-11-07 12:00:00.000000000","message":"Hi Gorka, thanks a lot for your review. Split this case into two.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7ac3d0e683c706969009bea2580f9dafe35a3fcb","unresolved":false,"context_lines":[{"line_number":2062,"context_line":"                               \u0027target_lun\u0027: 0,"},{"line_number":2063,"context_line":"                               \u0027target_iqns\u0027: ["},{"line_number":2064,"context_line":"                                   \u0027iqn.1982-01.com.ibm:1234.sim.node1\u0027,"},{"line_number":2065,"context_line":"                                   \u0027iqn.1982-01.com.ibm:1234.sim.node1\u0027,"},{"line_number":2066,"context_line":"                                   \u0027iqn.1982-01.com.ibm:1234.sim.node2\u0027],"},{"line_number":2067,"context_line":"                               \u0027target_portals\u0027:"},{"line_number":2068,"context_line":"                                   [\u00271.234.56.78:3260\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_cec44394","line":2065,"range":{"start_line":2065,"start_character":36,"end_line":2065,"end_character":71},"updated":"2016-10-27 13:08:28.000000000","message":"Is this valid?  Two IQN\u0027s that are the same?","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"ce8f250d559d1197700e6bad96928fe55204c41f","unresolved":false,"context_lines":[{"line_number":2062,"context_line":"                               \u0027target_lun\u0027: 0,"},{"line_number":2063,"context_line":"                               \u0027target_iqns\u0027: ["},{"line_number":2064,"context_line":"                                   \u0027iqn.1982-01.com.ibm:1234.sim.node1\u0027,"},{"line_number":2065,"context_line":"                                   \u0027iqn.1982-01.com.ibm:1234.sim.node1\u0027,"},{"line_number":2066,"context_line":"                                   \u0027iqn.1982-01.com.ibm:1234.sim.node2\u0027],"},{"line_number":2067,"context_line":"                               \u0027target_portals\u0027:"},{"line_number":2068,"context_line":"                                   [\u00271.234.56.78:3260\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_9a6357b1","line":2065,"range":{"start_line":2065,"start_character":36,"end_line":2065,"end_character":71},"in_reply_to":"ba5da102_cec44394","updated":"2016-10-28 02:53:35.000000000","message":"Thanks Jay for your review, it is valid, two ports in the same node have the same IQN, but different nodes should have different IQN.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":2092,"context_line":"                         ret[\u0027driver_volume_type\u0027])"},{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        # Check the single path host-volume map return value"},{"line_number":2095,"context_line":"        for k, v in exp_s_path[\u0027data\u0027].items():"},{"line_number":2096,"context_line":"            self.assertEqual(v, ret[\u0027data\u0027][k])"},{"line_number":2097,"context_line":""},{"line_number":2098,"context_line":"        ret \u003d self.iscsi_driver._helpers.get_host_from_connector("},{"line_number":2099,"context_line":"            connector)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_728fb875","line":2096,"range":{"start_line":2095,"start_character":0,"end_line":2096,"end_character":47},"updated":"2016-11-04 09:18:58.000000000","message":"-1: Shouldn\u0027t this be?:\n\n self.assertDictEqual(exp_s_path[\u0027data\u0027], ret[\u0027data\u0027])","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"462a39c1e057a4f58e755e02a2a8ec134e972f7d","unresolved":false,"context_lines":[{"line_number":2092,"context_line":"                         ret[\u0027driver_volume_type\u0027])"},{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        # Check the single path host-volume map return value"},{"line_number":2095,"context_line":"        for k, v in exp_s_path[\u0027data\u0027].items():"},{"line_number":2096,"context_line":"            self.assertEqual(v, ret[\u0027data\u0027][k])"},{"line_number":2097,"context_line":""},{"line_number":2098,"context_line":"        ret \u003d self.iscsi_driver._helpers.get_host_from_connector("},{"line_number":2099,"context_line":"            connector)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_e504aa7f","line":2096,"range":{"start_line":2095,"start_character":0,"end_line":2096,"end_character":47},"in_reply_to":"9a629dbe_005d4ce9","updated":"2016-11-08 13:29:43.000000000","message":"That makes sense, thanks.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"b36312c21167b9ca07ac78dcdec96fe85a395092","unresolved":false,"context_lines":[{"line_number":2092,"context_line":"                         ret[\u0027driver_volume_type\u0027])"},{"line_number":2093,"context_line":""},{"line_number":2094,"context_line":"        # Check the single path host-volume map return value"},{"line_number":2095,"context_line":"        for k, v in exp_s_path[\u0027data\u0027].items():"},{"line_number":2096,"context_line":"            self.assertEqual(v, ret[\u0027data\u0027][k])"},{"line_number":2097,"context_line":""},{"line_number":2098,"context_line":"        ret \u003d self.iscsi_driver._helpers.get_host_from_connector("},{"line_number":2099,"context_line":"            connector)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_005d4ce9","line":2096,"range":{"start_line":2095,"start_character":0,"end_line":2096,"end_character":47},"in_reply_to":"ba5da102_728fb875","updated":"2016-11-07 12:00:00.000000000","message":"We only check iqn releated info such as target_iqns in exp_s_path, some other info, for example auth_username, auth_password are also contained in ret.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":2099,"context_line":"            connector)"},{"line_number":2100,"context_line":"        self.assertIsNotNone(ret)"},{"line_number":2101,"context_line":""},{"line_number":2102,"context_line":"        self.iscsi_driver.terminate_connection(volume_iSCSI, connector)"},{"line_number":2103,"context_line":"        ret \u003d self.iscsi_driver._helpers.get_host_from_connector("},{"line_number":2104,"context_line":"            connector)"},{"line_number":2105,"context_line":"        self.assertIsNone(ret)"},{"line_number":2106,"context_line":""},{"line_number":2107,"context_line":"        # Multipath is uesed."},{"line_number":2108,"context_line":"        connector[\u0027multipath\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_d20884dc","line":2105,"range":{"start_line":2102,"start_character":0,"end_line":2105,"end_character":30},"updated":"2016-11-04 09:18:58.000000000","message":"-1: We are testing the initialize connection, not the terminate, we don\u0027t need to do this","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"462a39c1e057a4f58e755e02a2a8ec134e972f7d","unresolved":false,"context_lines":[{"line_number":2099,"context_line":"            connector)"},{"line_number":2100,"context_line":"        self.assertIsNotNone(ret)"},{"line_number":2101,"context_line":""},{"line_number":2102,"context_line":"        self.iscsi_driver.terminate_connection(volume_iSCSI, connector)"},{"line_number":2103,"context_line":"        ret \u003d self.iscsi_driver._helpers.get_host_from_connector("},{"line_number":2104,"context_line":"            connector)"},{"line_number":2105,"context_line":"        self.assertIsNone(ret)"},{"line_number":2106,"context_line":""},{"line_number":2107,"context_line":"        # Multipath is uesed."},{"line_number":2108,"context_line":"        connector[\u0027multipath\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_c545e6b3","line":2105,"range":{"start_line":2102,"start_character":0,"end_line":2105,"end_character":30},"in_reply_to":"9a629dbe_20f970c9","updated":"2016-11-08 13:29:43.000000000","message":"Unless you have side effects in your calls (which you must not have) you don\u0027t have to do any cleanup.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"4192ee19c3d03316b4fe0f41aa430890ba8e3282","unresolved":false,"context_lines":[{"line_number":2099,"context_line":"            connector)"},{"line_number":2100,"context_line":"        self.assertIsNotNone(ret)"},{"line_number":2101,"context_line":""},{"line_number":2102,"context_line":"        self.iscsi_driver.terminate_connection(volume_iSCSI, connector)"},{"line_number":2103,"context_line":"        ret \u003d self.iscsi_driver._helpers.get_host_from_connector("},{"line_number":2104,"context_line":"            connector)"},{"line_number":2105,"context_line":"        self.assertIsNone(ret)"},{"line_number":2106,"context_line":""},{"line_number":2107,"context_line":"        # Multipath is uesed."},{"line_number":2108,"context_line":"        connector[\u0027multipath\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_ef72a5ac","line":2105,"range":{"start_line":2102,"start_character":0,"end_line":2105,"end_character":30},"in_reply_to":"9a629dbe_c545e6b3","updated":"2016-11-09 09:22:36.000000000","message":"Thanks a lot for your comments. It is addressed in new patch.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"b36312c21167b9ca07ac78dcdec96fe85a395092","unresolved":false,"context_lines":[{"line_number":2099,"context_line":"            connector)"},{"line_number":2100,"context_line":"        self.assertIsNotNone(ret)"},{"line_number":2101,"context_line":""},{"line_number":2102,"context_line":"        self.iscsi_driver.terminate_connection(volume_iSCSI, connector)"},{"line_number":2103,"context_line":"        ret \u003d self.iscsi_driver._helpers.get_host_from_connector("},{"line_number":2104,"context_line":"            connector)"},{"line_number":2105,"context_line":"        self.assertIsNone(ret)"},{"line_number":2106,"context_line":""},{"line_number":2107,"context_line":"        # Multipath is uesed."},{"line_number":2108,"context_line":"        connector[\u0027multipath\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_20f970c9","line":2105,"range":{"start_line":2102,"start_character":0,"end_line":2105,"end_character":30},"in_reply_to":"ba5da102_d20884dc","updated":"2016-11-07 12:00:00.000000000","message":"We just clear the env during the end of test. Just remove the checkpoint","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":2111,"context_line":"            volume_iSCSI, connector)"},{"line_number":2112,"context_line":"        self.assertEqual(exp_m_path[\u0027driver_volume_type\u0027],"},{"line_number":2113,"context_line":"                         ret[\u0027driver_volume_type\u0027])"},{"line_number":2114,"context_line":"        # Check the multipath host-volume map return value"},{"line_number":2115,"context_line":"        for k, v in exp_m_path[\u0027data\u0027].items():"},{"line_number":2116,"context_line":"            self.assertEqual(v, ret[\u0027data\u0027][k])"},{"line_number":2117,"context_line":""},{"line_number":2118,"context_line":"        ret \u003d self.iscsi_driver._helpers.get_host_from_connector("},{"line_number":2119,"context_line":"            connector)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_72e6d845","line":2116,"range":{"start_line":2114,"start_character":0,"end_line":2116,"end_character":47},"updated":"2016-11-04 09:18:58.000000000","message":"ditto","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":2119,"context_line":"            connector)"},{"line_number":2120,"context_line":"        self.assertIsNotNone(ret)"},{"line_number":2121,"context_line":""},{"line_number":2122,"context_line":"        self.iscsi_driver.terminate_connection(volume_iSCSI, connector)"},{"line_number":2123,"context_line":"        ret \u003d self.iscsi_driver._helpers.get_host_from_connector("},{"line_number":2124,"context_line":"            connector)"},{"line_number":2125,"context_line":"        self.assertIsNone(ret)"},{"line_number":2126,"context_line":""},{"line_number":2127,"context_line":"    def test_storwize_svc_iscsi_host_maps(self):"},{"line_number":2128,"context_line":"        # Create two volumes to be used in mappings"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_f20d88e9","line":2125,"range":{"start_line":2122,"start_character":0,"end_line":2125,"end_character":30},"updated":"2016-11-04 09:18:58.000000000","message":"ditto","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6c024457f4fc501432b73dbeaa53fafa41d6de83","unresolved":false,"context_lines":[{"line_number":2080,"context_line":"            connector)"},{"line_number":2081,"context_line":"        self.assertIsNotNone(ret)"},{"line_number":2082,"context_line":""},{"line_number":2083,"context_line":"        self.iscsi_driver.terminate_connection(volume_iSCSI, connector)"},{"line_number":2084,"context_line":""},{"line_number":2085,"context_line":"    def test_storwize_initialize_iscsi_connection_multipath(self):"},{"line_number":2086,"context_line":"        # Test the return value for _get_iscsi_properties"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a629dbe_85504e60","line":2083,"range":{"start_line":2083,"start_character":0,"end_line":2083,"end_character":71},"updated":"2016-11-08 13:32:43.000000000","message":"-1: As mentioned in previous patch, Unless you have side effects in your calls (which you must not have) you don\u0027t have to do any cleanup.","commit_id":"f98bee862f53ca2fb84bc070169dffae5f68dcc5"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"5d948d199bc4c84bfbe769fc9401a9e5b5b96818","unresolved":false,"context_lines":[{"line_number":2080,"context_line":"            connector)"},{"line_number":2081,"context_line":"        self.assertIsNotNone(ret)"},{"line_number":2082,"context_line":""},{"line_number":2083,"context_line":"        self.iscsi_driver.terminate_connection(volume_iSCSI, connector)"},{"line_number":2084,"context_line":""},{"line_number":2085,"context_line":"    def test_storwize_initialize_iscsi_connection_multipath(self):"},{"line_number":2086,"context_line":"        # Test the return value for _get_iscsi_properties"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a629dbe_2fac9dec","line":2083,"range":{"start_line":2083,"start_character":0,"end_line":2083,"end_character":71},"in_reply_to":"9a629dbe_85504e60","updated":"2016-11-09 09:23:07.000000000","message":"Thanks a lot for your comments. It is addressed in new patch.","commit_id":"f98bee862f53ca2fb84bc070169dffae5f68dcc5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6c024457f4fc501432b73dbeaa53fafa41d6de83","unresolved":false,"context_lines":[{"line_number":2115,"context_line":"        vol_type_iSCSI \u003d volume_types.create(self.ctxt, \u0027iSCSI\u0027, extra_spec)"},{"line_number":2116,"context_line":"        volume_iSCSI[\u0027volume_type_id\u0027] \u003d vol_type_iSCSI[\u0027id\u0027]"},{"line_number":2117,"context_line":""},{"line_number":2118,"context_line":"        # Make sure that the volumes have been created"},{"line_number":2119,"context_line":"        self._assert_vol_exists(volume_iSCSI[\u0027name\u0027], True)"},{"line_number":2120,"context_line":""},{"line_number":2121,"context_line":"        # Check case where no hosts exist"},{"line_number":2122,"context_line":"        ret \u003d self.iscsi_driver._helpers.get_host_from_connector("}],"source_content_type":"text/x-python","patch_set":12,"id":"9a629dbe_c5a6c652","line":2119,"range":{"start_line":2118,"start_character":0,"end_line":2119,"end_character":59},"updated":"2016-11-08 13:32:43.000000000","message":"nit: This is not necessary, you shouldn\u0027t be checking the setup, as it is reasonable to assume that it\u0027ll get done right.","commit_id":"f98bee862f53ca2fb84bc070169dffae5f68dcc5"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"5d948d199bc4c84bfbe769fc9401a9e5b5b96818","unresolved":false,"context_lines":[{"line_number":2115,"context_line":"        vol_type_iSCSI \u003d volume_types.create(self.ctxt, \u0027iSCSI\u0027, extra_spec)"},{"line_number":2116,"context_line":"        volume_iSCSI[\u0027volume_type_id\u0027] \u003d vol_type_iSCSI[\u0027id\u0027]"},{"line_number":2117,"context_line":""},{"line_number":2118,"context_line":"        # Make sure that the volumes have been created"},{"line_number":2119,"context_line":"        self._assert_vol_exists(volume_iSCSI[\u0027name\u0027], True)"},{"line_number":2120,"context_line":""},{"line_number":2121,"context_line":"        # Check case where no hosts exist"},{"line_number":2122,"context_line":"        ret \u003d self.iscsi_driver._helpers.get_host_from_connector("}],"source_content_type":"text/x-python","patch_set":12,"id":"9a629dbe_4fbb9127","line":2119,"range":{"start_line":2118,"start_character":0,"end_line":2119,"end_character":59},"in_reply_to":"9a629dbe_c5a6c652","updated":"2016-11-09 09:23:07.000000000","message":"Done","commit_id":"f98bee862f53ca2fb84bc070169dffae5f68dcc5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6c024457f4fc501432b73dbeaa53fafa41d6de83","unresolved":false,"context_lines":[{"line_number":2133,"context_line":"        for k, v in exp_m_path[\u0027data\u0027].items():"},{"line_number":2134,"context_line":"            self.assertEqual(v, ret[\u0027data\u0027][k])"},{"line_number":2135,"context_line":""},{"line_number":2136,"context_line":"        ret \u003d self.iscsi_driver._helpers.get_host_from_connector("},{"line_number":2137,"context_line":"            connector)"},{"line_number":2138,"context_line":"        self.assertIsNotNone(ret)"},{"line_number":2139,"context_line":""},{"line_number":2140,"context_line":"        self.iscsi_driver.terminate_connection(volume_iSCSI, connector)"},{"line_number":2141,"context_line":""},{"line_number":2142,"context_line":"    def test_storwize_svc_iscsi_host_maps(self):"},{"line_number":2143,"context_line":"        # Create two volumes to be used in mappings"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a629dbe_85220e00","line":2140,"range":{"start_line":2136,"start_character":0,"end_line":2140,"end_character":71},"updated":"2016-11-08 13:32:43.000000000","message":"ditto","commit_id":"f98bee862f53ca2fb84bc070169dffae5f68dcc5"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"5d948d199bc4c84bfbe769fc9401a9e5b5b96818","unresolved":false,"context_lines":[{"line_number":2133,"context_line":"        for k, v in exp_m_path[\u0027data\u0027].items():"},{"line_number":2134,"context_line":"            self.assertEqual(v, ret[\u0027data\u0027][k])"},{"line_number":2135,"context_line":""},{"line_number":2136,"context_line":"        ret \u003d self.iscsi_driver._helpers.get_host_from_connector("},{"line_number":2137,"context_line":"            connector)"},{"line_number":2138,"context_line":"        self.assertIsNotNone(ret)"},{"line_number":2139,"context_line":""},{"line_number":2140,"context_line":"        self.iscsi_driver.terminate_connection(volume_iSCSI, connector)"},{"line_number":2141,"context_line":""},{"line_number":2142,"context_line":"    def test_storwize_svc_iscsi_host_maps(self):"},{"line_number":2143,"context_line":"        # Create two volumes to be used in mappings"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a629dbe_6fb6953e","line":2140,"range":{"start_line":2136,"start_character":0,"end_line":2140,"end_character":71},"in_reply_to":"9a629dbe_85220e00","updated":"2016-11-09 09:23:07.000000000","message":"Thanks a lot for your comments. It is addressed in new patch.","commit_id":"f98bee862f53ca2fb84bc070169dffae5f68dcc5"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_iscsi.py":[{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"d0ef1841bc8bcd0d11c1ce073b63ed819be9d0fd","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        try:"},{"line_number":183,"context_line":"            preferred_node \u003d volume_attributes[\u0027preferred_node_id\u0027]"},{"line_number":184,"context_line":"            IO_group \u003d volume_attributes[\u0027IO_group_id\u0027]"},{"line_number":185,"context_line":"        except KeyError as e:"},{"line_number":186,"context_line":"            LOG.error(_LE(\u0027Did not find expected column name in \u0027"},{"line_number":187,"context_line":"                          \u0027lsvdisk: %s.\u0027), e)"},{"line_number":188,"context_line":"            raise exception.VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_64b3810b","line":185,"range":{"start_line":185,"start_character":8,"end_line":185,"end_character":29},"updated":"2016-04-21 21:06:28.000000000","message":"Would be nice to know the key that was missing using e.args[0].","commit_id":"fe140421e5280efb128e4f8041c8391603e7151f"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"89f57184880015f5a03e69310d730e4235528234","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        try:"},{"line_number":183,"context_line":"            preferred_node \u003d volume_attributes[\u0027preferred_node_id\u0027]"},{"line_number":184,"context_line":"            IO_group \u003d volume_attributes[\u0027IO_group_id\u0027]"},{"line_number":185,"context_line":"        except KeyError as e:"},{"line_number":186,"context_line":"            LOG.error(_LE(\u0027Did not find expected column name in \u0027"},{"line_number":187,"context_line":"                          \u0027lsvdisk: %s.\u0027), e)"},{"line_number":188,"context_line":"            raise exception.VolumeBackendAPIException("}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_f878b72d","line":185,"range":{"start_line":185,"start_character":8,"end_line":185,"end_character":29},"in_reply_to":"1a122d0e_64b3810b","updated":"2016-04-22 12:01:16.000000000","message":"Thanks a lot for your review. It is addressed in new patch 4.","commit_id":"fe140421e5280efb128e4f8041c8391603e7151f"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"d0ef1841bc8bcd0d11c1ce073b63ed819be9d0fd","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            preferred_node \u003d volume_attributes[\u0027preferred_node_id\u0027]"},{"line_number":184,"context_line":"            IO_group \u003d volume_attributes[\u0027IO_group_id\u0027]"},{"line_number":185,"context_line":"        except KeyError as e:"},{"line_number":186,"context_line":"            LOG.error(_LE(\u0027Did not find expected column name in \u0027"},{"line_number":187,"context_line":"                          \u0027lsvdisk: %s.\u0027), e)"},{"line_number":188,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":189,"context_line":"                data\u003d_(\u0027initialize_connection: Missing volume attribute for \u0027"},{"line_number":190,"context_line":"                       \u0027volume %s.\u0027) % volume_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_44af6594","line":187,"range":{"start_line":186,"start_character":12,"end_line":187,"end_character":45},"updated":"2016-04-21 21:06:28.000000000","message":"Why in this case, not log and raise the same information?","commit_id":"fe140421e5280efb128e4f8041c8391603e7151f"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"89f57184880015f5a03e69310d730e4235528234","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            preferred_node \u003d volume_attributes[\u0027preferred_node_id\u0027]"},{"line_number":184,"context_line":"            IO_group \u003d volume_attributes[\u0027IO_group_id\u0027]"},{"line_number":185,"context_line":"        except KeyError as e:"},{"line_number":186,"context_line":"            LOG.error(_LE(\u0027Did not find expected column name in \u0027"},{"line_number":187,"context_line":"                          \u0027lsvdisk: %s.\u0027), e)"},{"line_number":188,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":189,"context_line":"                data\u003d_(\u0027initialize_connection: Missing volume attribute for \u0027"},{"line_number":190,"context_line":"                       \u0027volume %s.\u0027) % volume_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_78930750","line":187,"range":{"start_line":186,"start_character":12,"end_line":187,"end_character":45},"in_reply_to":"1a122d0e_44af6594","updated":"2016-04-22 12:01:16.000000000","message":"Thanks a lot for your review. It is addressed in new patch 4.","commit_id":"fe140421e5280efb128e4f8041c8391603e7151f"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"d0ef1841bc8bcd0d11c1ce073b63ed819be9d0fd","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        # Get preferred node and other nodes in I/O group"},{"line_number":193,"context_line":"        preferred_node_entry \u003d None"},{"line_number":194,"context_line":"        io_group_nodes \u003d []"},{"line_number":195,"context_line":"        for node in self._state[\u0027storage_nodes\u0027].values():"},{"line_number":196,"context_line":"            if self.protocol not in node[\u0027enabled_protocols\u0027]:"},{"line_number":197,"context_line":"                continue"},{"line_number":198,"context_line":"            if node[\u0027id\u0027] \u003d\u003d preferred_node:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_a4d0f9f8","line":195,"range":{"start_line":195,"start_character":1,"end_line":195,"end_character":58},"updated":"2016-04-21 21:06:28.000000000","message":"In the original code this was in a big try block. While it is good to break this to small blocks, don\u0027t we need to protect this loop any more?","commit_id":"fe140421e5280efb128e4f8041c8391603e7151f"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"89f57184880015f5a03e69310d730e4235528234","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        # Get preferred node and other nodes in I/O group"},{"line_number":193,"context_line":"        preferred_node_entry \u003d None"},{"line_number":194,"context_line":"        io_group_nodes \u003d []"},{"line_number":195,"context_line":"        for node in self._state[\u0027storage_nodes\u0027].values():"},{"line_number":196,"context_line":"            if self.protocol not in node[\u0027enabled_protocols\u0027]:"},{"line_number":197,"context_line":"                continue"},{"line_number":198,"context_line":"            if node[\u0027id\u0027] \u003d\u003d preferred_node:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_b8875fd6","line":195,"range":{"start_line":195,"start_character":1,"end_line":195,"end_character":58},"in_reply_to":"1a122d0e_a4d0f9f8","updated":"2016-04-22 12:01:16.000000000","message":"Thanks a lot for your review. Actually, the logic is kept as original here and the try exception is also kept in the outside where the function is called.","commit_id":"fe140421e5280efb128e4f8041c8391603e7151f"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"d0ef1841bc8bcd0d11c1ce073b63ed819be9d0fd","unresolved":false,"context_lines":[{"line_number":255,"context_line":"                            ((ip_data[\u0027state\u0027] \u003d\u003d \u0027configured\u0027 and"},{"line_number":256,"context_line":"                              link_state \u003d\u003d \u0027active\u0027) or"},{"line_number":257,"context_line":"                                ip_data[\u0027state\u0027] \u003d\u003d \u0027online\u0027)):"},{"line_number":258,"context_line":"                        if len(ip_data[\u0027IP_address\u0027]):"},{"line_number":259,"context_line":"                            properties[\u0027target_portals\u0027].append("},{"line_number":260,"context_line":"                                \u0027%s:%s\u0027 % (ip_data[\u0027IP_address\u0027], \u00273260\u0027))"},{"line_number":261,"context_line":"                            add_iqn \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_fd50c00c","line":258,"range":{"start_line":258,"start_character":24,"end_line":258,"end_character":54},"updated":"2016-04-21 21:06:28.000000000","message":"seems like ip \u003d ip_data.get(\u0027IP_address\u0027, ip_data.get(IP_address_6, None)) would simplify this code.","commit_id":"fe140421e5280efb128e4f8041c8391603e7151f"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"89f57184880015f5a03e69310d730e4235528234","unresolved":false,"context_lines":[{"line_number":255,"context_line":"                            ((ip_data[\u0027state\u0027] \u003d\u003d \u0027configured\u0027 and"},{"line_number":256,"context_line":"                              link_state \u003d\u003d \u0027active\u0027) or"},{"line_number":257,"context_line":"                                ip_data[\u0027state\u0027] \u003d\u003d \u0027online\u0027)):"},{"line_number":258,"context_line":"                        if len(ip_data[\u0027IP_address\u0027]):"},{"line_number":259,"context_line":"                            properties[\u0027target_portals\u0027].append("},{"line_number":260,"context_line":"                                \u0027%s:%s\u0027 % (ip_data[\u0027IP_address\u0027], \u00273260\u0027))"},{"line_number":261,"context_line":"                            add_iqn \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_d8e7bbaa","line":258,"range":{"start_line":258,"start_character":24,"end_line":258,"end_character":54},"in_reply_to":"1a122d0e_fd50c00c","updated":"2016-04-22 12:01:16.000000000","message":"Thanks a lot for your review. I have update this section again and ip_data.get(\u0027IP_address\u0027, ip_data.get(\u0027IP_address_6\u0027, None)) does not work since the ip_data[\u0027IP_address\u0027]could be \u0027\u0027 and it will not read ip_data[\u0027IP_address_6\u0027] if ues ip_data.get(\u0027IP_address\u0027, ip_data.get(\u0027IP_address_6\u0027, None))","commit_id":"fe140421e5280efb128e4f8041c8391603e7151f"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"2c82b745626895ab8401b0fb9129883d1ab9789e","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            properties \u003d self._get_single_iscsi_data(volume, connector,"},{"line_number":153,"context_line":"                                                     lun_id, chap_secret)"},{"line_number":154,"context_line":"            multipath \u003d connector.get(\u0027multipath\u0027, False)"},{"line_number":155,"context_line":"            if multipath:"},{"line_number":156,"context_line":"                self._get_multi_iscsi_data(volume, connector,"},{"line_number":157,"context_line":"                                           lun_id, properties)"},{"line_number":158,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_c411ed53","line":155,"range":{"start_line":155,"start_character":12,"end_line":155,"end_character":25},"updated":"2016-07-07 10:43:47.000000000","message":"You\u0027re already checking the multipath value first thing in _get_multi_iscsi_data. Why not call this function anyway?","commit_id":"a3cc455d5f55bea95419a15b236fd6136b8202e0"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"da238ebc5063a60f3d29fe2de86716d48a9e27d6","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            properties \u003d self._get_single_iscsi_data(volume, connector,"},{"line_number":153,"context_line":"                                                     lun_id, chap_secret)"},{"line_number":154,"context_line":"            multipath \u003d connector.get(\u0027multipath\u0027, False)"},{"line_number":155,"context_line":"            if multipath:"},{"line_number":156,"context_line":"                self._get_multi_iscsi_data(volume, connector,"},{"line_number":157,"context_line":"                                           lun_id, properties)"},{"line_number":158,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_4868ecba","line":155,"range":{"start_line":155,"start_character":12,"end_line":155,"end_character":25},"in_reply_to":"1aa78d24_c411ed53","updated":"2016-07-11 05:46:50.000000000","message":"Thanks Alon, please help to review patch 8.","commit_id":"a3cc455d5f55bea95419a15b236fd6136b8202e0"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"2c82b745626895ab8401b0fb9129883d1ab9789e","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                   \u0027prop\u0027: properties})"},{"line_number":247,"context_line":"        return properties"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def _get_multi_iscsi_data(self, volume, connector, lun_id, properties):"},{"line_number":250,"context_line":"        LOG.debug(\u0027enter: _get_multi_iscsi_data: volume %(vol)s with \u0027"},{"line_number":251,"context_line":"                  \u0027connector %(conn)s lun_id %(lun_id)s\u0027,"},{"line_number":252,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_44505d32","line":249,"range":{"start_line":249,"start_character":8,"end_line":249,"end_character":29},"updated":"2016-07-07 10:43:47.000000000","message":"this function is called after _get_single_iscsi_data and should avoid duplicating it. Only things related to multipath.","commit_id":"a3cc455d5f55bea95419a15b236fd6136b8202e0"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"da238ebc5063a60f3d29fe2de86716d48a9e27d6","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                   \u0027prop\u0027: properties})"},{"line_number":247,"context_line":"        return properties"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def _get_multi_iscsi_data(self, volume, connector, lun_id, properties):"},{"line_number":250,"context_line":"        LOG.debug(\u0027enter: _get_multi_iscsi_data: volume %(vol)s with \u0027"},{"line_number":251,"context_line":"                  \u0027connector %(conn)s lun_id %(lun_id)s\u0027,"},{"line_number":252,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_c8733cb3","line":249,"range":{"start_line":249,"start_character":8,"end_line":249,"end_character":29},"in_reply_to":"1aa78d24_44505d32","updated":"2016-07-11 05:46:50.000000000","message":"Thanks Alon, please help to review patch 8.","commit_id":"a3cc455d5f55bea95419a15b236fd6136b8202e0"},{"author":{"_account_id":12382,"name":"YaoZheng","email":"zheng.yao1@zte.com.cn","username":"YaoZheng"},"change_message_id":"104ebaf37bd3b9cf06d516838ffe4beccdd3a948","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        multipath \u003d connector.get(\u0027multipath\u0027, False)"},{"line_number":256,"context_line":"        LOG.debug(\u0027_get_multi_iscsi_data: multipath %(multipath)s\u0027,"},{"line_number":257,"context_line":"                  {\u0027multipath\u0027: multipath})"},{"line_number":258,"context_line":"        if not multipath:"},{"line_number":259,"context_line":"            return None"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_5df599c9","line":258,"range":{"start_line":258,"start_character":15,"end_line":258,"end_character":24},"updated":"2016-07-08 06:24:03.000000000","message":"This case is redunant. Only multipath is True, the function  _get_multi_iscsi_data just is called.","commit_id":"a3cc455d5f55bea95419a15b236fd6136b8202e0"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"da238ebc5063a60f3d29fe2de86716d48a9e27d6","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        multipath \u003d connector.get(\u0027multipath\u0027, False)"},{"line_number":256,"context_line":"        LOG.debug(\u0027_get_multi_iscsi_data: multipath %(multipath)s\u0027,"},{"line_number":257,"context_line":"                  {\u0027multipath\u0027: multipath})"},{"line_number":258,"context_line":"        if not multipath:"},{"line_number":259,"context_line":"            return None"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_a876b0a0","line":258,"range":{"start_line":258,"start_character":15,"end_line":258,"end_character":24},"in_reply_to":"1aa78d24_5df599c9","updated":"2016-07-11 05:46:50.000000000","message":"Thanks YaoZheng, please help to review patch 8.","commit_id":"a3cc455d5f55bea95419a15b236fd6136b8202e0"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"2c82b745626895ab8401b0fb9129883d1ab9789e","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        if not multipath:"},{"line_number":259,"context_line":"            return None"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":262,"context_line":"        volume_attributes \u003d self._helpers.get_vdisk_attributes(volume_name)"},{"line_number":263,"context_line":"        if volume_attributes is None:"},{"line_number":264,"context_line":"            msg \u003d (_(\u0027_get_multi_iscsi_data: Failed to get attributes\u0027"},{"line_number":265,"context_line":"                     \u0027 for volume %s.\u0027) % volume_name)"},{"line_number":266,"context_line":"            LOG.error(msg)"},{"line_number":267,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        # If iscsi multipath is used, multiple iscsi"},{"line_number":270,"context_line":"        # portals, iqns, luns should be returned."}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_440b3dd6","line":267,"range":{"start_line":261,"start_character":7,"end_line":267,"end_character":62},"updated":"2016-07-07 10:43:47.000000000","message":"was done in the_get_single_iscsi_data. Is there a reason to do it again?","commit_id":"a3cc455d5f55bea95419a15b236fd6136b8202e0"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"da238ebc5063a60f3d29fe2de86716d48a9e27d6","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        if not multipath:"},{"line_number":259,"context_line":"            return None"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":262,"context_line":"        volume_attributes \u003d self._helpers.get_vdisk_attributes(volume_name)"},{"line_number":263,"context_line":"        if volume_attributes is None:"},{"line_number":264,"context_line":"            msg \u003d (_(\u0027_get_multi_iscsi_data: Failed to get attributes\u0027"},{"line_number":265,"context_line":"                     \u0027 for volume %s.\u0027) % volume_name)"},{"line_number":266,"context_line":"            LOG.error(msg)"},{"line_number":267,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        # If iscsi multipath is used, multiple iscsi"},{"line_number":270,"context_line":"        # portals, iqns, luns should be returned."}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_48410c39","line":267,"range":{"start_line":261,"start_character":7,"end_line":267,"end_character":62},"in_reply_to":"1aa78d24_440b3dd6","updated":"2016-07-11 05:46:50.000000000","message":"Thanks Alon, please help to check patch 8.","commit_id":"a3cc455d5f55bea95419a15b236fd6136b8202e0"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"2c82b745626895ab8401b0fb9129883d1ab9789e","unresolved":false,"context_lines":[{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        # If iscsi multipath is used, multiple iscsi"},{"line_number":270,"context_line":"        # portals, iqns, luns should be returned."},{"line_number":271,"context_line":"        multipath \u003d connector.get(\u0027multipath\u0027, False)"},{"line_number":272,"context_line":"        LOG.debug(\u0027_get_multi_iscsi_data: multipath %(multipath)s\u0027,"},{"line_number":273,"context_line":"                  {\u0027multipath\u0027: multipath})"},{"line_number":274,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_84008567","line":271,"range":{"start_line":271,"start_character":8,"end_line":271,"end_character":53},"updated":"2016-07-07 10:43:47.000000000","message":"the value of multipath was determined a few lines above in the same function, and is only used for debugging. can you remove it?","commit_id":"a3cc455d5f55bea95419a15b236fd6136b8202e0"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"da238ebc5063a60f3d29fe2de86716d48a9e27d6","unresolved":false,"context_lines":[{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        # If iscsi multipath is used, multiple iscsi"},{"line_number":270,"context_line":"        # portals, iqns, luns should be returned."},{"line_number":271,"context_line":"        multipath \u003d connector.get(\u0027multipath\u0027, False)"},{"line_number":272,"context_line":"        LOG.debug(\u0027_get_multi_iscsi_data: multipath %(multipath)s\u0027,"},{"line_number":273,"context_line":"                  {\u0027multipath\u0027: multipath})"},{"line_number":274,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_283c80be","line":271,"range":{"start_line":271,"start_character":8,"end_line":271,"end_character":53},"in_reply_to":"1aa78d24_84008567","updated":"2016-07-11 05:46:50.000000000","message":"Thanks Alon, please help to review patch 8.","commit_id":"a3cc455d5f55bea95419a15b236fd6136b8202e0"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4e831c93652e8919524858f2aa63151c5d048fdd","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                connector[\u0027initiator\u0027])"},{"line_number":242,"context_line":"            properties[\u0027discovery_auth_password\u0027] \u003d chap_secret"},{"line_number":243,"context_line":"        LOG.debug(\u0027leave: _get_single_iscsi_data:\\n volume: %(vol)s\\n \u0027"},{"line_number":244,"context_line":"                  \u0027connector%(conn)s\\n lun_id %(lun_id)s\\n \u0027"},{"line_number":245,"context_line":"                  \u0027properties: %(prop)s\u0027,"},{"line_number":246,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector, \u0027lun_id\u0027: lun_id,"},{"line_number":247,"context_line":"                   \u0027prop\u0027: properties})"}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_611ad9c7","line":244,"range":{"start_line":244,"start_character":19,"end_line":244,"end_character":36},"updated":"2016-07-12 11:43:36.000000000","message":"Missing a blank space between \"connector\" and \"%(conn)s\"","commit_id":"55812c5288a97f6a85bf95d78ea78019e4e693fe"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"6f84aae1417130f28e6ab0c4d4fb2963f8565102","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                connector[\u0027initiator\u0027])"},{"line_number":242,"context_line":"            properties[\u0027discovery_auth_password\u0027] \u003d chap_secret"},{"line_number":243,"context_line":"        LOG.debug(\u0027leave: _get_single_iscsi_data:\\n volume: %(vol)s\\n \u0027"},{"line_number":244,"context_line":"                  \u0027connector%(conn)s\\n lun_id %(lun_id)s\\n \u0027"},{"line_number":245,"context_line":"                  \u0027properties: %(prop)s\u0027,"},{"line_number":246,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector, \u0027lun_id\u0027: lun_id,"},{"line_number":247,"context_line":"                   \u0027prop\u0027: properties})"}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_2e6375b2","line":244,"range":{"start_line":244,"start_character":19,"end_line":244,"end_character":36},"in_reply_to":"1aa78d24_611ad9c7","updated":"2016-07-13 01:34:54.000000000","message":"Thanks huyang, I have fixed it, please help to review again","commit_id":"55812c5288a97f6a85bf95d78ea78019e4e693fe"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4e831c93652e8919524858f2aa63151c5d048fdd","unresolved":false,"context_lines":[{"line_number":290,"context_line":"            LOG.error(msg)"},{"line_number":291,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        LOG.debug(\u0027leave: _get_multi_iscsi_data:\\n volume: %(vol)s\\n connector\u0027"},{"line_number":294,"context_line":"                  \u0027%(conn)s\\n lun_id %(lun_id)s\\n properties: %(prop)s\u0027,"},{"line_number":295,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector, \u0027lun_id\u0027: lun_id,"},{"line_number":296,"context_line":"                   \u0027prop\u0027: properties})"},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_8190a5ee","line":294,"range":{"start_line":293,"start_character":69,"end_line":294,"end_character":27},"updated":"2016-07-12 11:43:36.000000000","message":"Same","commit_id":"55812c5288a97f6a85bf95d78ea78019e4e693fe"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"6f84aae1417130f28e6ab0c4d4fb2963f8565102","unresolved":false,"context_lines":[{"line_number":290,"context_line":"            LOG.error(msg)"},{"line_number":291,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        LOG.debug(\u0027leave: _get_multi_iscsi_data:\\n volume: %(vol)s\\n connector\u0027"},{"line_number":294,"context_line":"                  \u0027%(conn)s\\n lun_id %(lun_id)s\\n properties: %(prop)s\u0027,"},{"line_number":295,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector, \u0027lun_id\u0027: lun_id,"},{"line_number":296,"context_line":"                   \u0027prop\u0027: properties})"},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_8e56e9cb","line":294,"range":{"start_line":293,"start_character":69,"end_line":294,"end_character":27},"in_reply_to":"1aa78d24_8190a5ee","updated":"2016-07-13 01:34:54.000000000","message":"Thanks","commit_id":"55812c5288a97f6a85bf95d78ea78019e4e693fe"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector,"},{"line_number":179,"context_line":"                   \u0027lun_id\u0027: lun_id})"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":182,"context_line":"        volume_attributes \u003d self._helpers.get_vdisk_attributes(volume_name)"},{"line_number":183,"context_line":"        if volume_attributes is None:"},{"line_number":184,"context_line":"            msg \u003d (_(\u0027_get_single_iscsi_data: Failed to get attributes\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_ac773b07","line":181,"range":{"start_line":181,"start_character":0,"end_line":181,"end_character":36},"updated":"2016-11-04 09:18:58.000000000","message":"-1: volume is an ovo instance, we should be using instance attributes:\n\n volume_name \u003d volume.name","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"462a39c1e057a4f58e755e02a2a8ec134e972f7d","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector,"},{"line_number":179,"context_line":"                   \u0027lun_id\u0027: lun_id})"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":182,"context_line":"        volume_attributes \u003d self._helpers.get_vdisk_attributes(volume_name)"},{"line_number":183,"context_line":"        if volume_attributes is None:"},{"line_number":184,"context_line":"            msg \u003d (_(\u0027_get_single_iscsi_data: Failed to get attributes\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_e55e6ae8","line":181,"range":{"start_line":181,"start_character":0,"end_line":181,"end_character":36},"in_reply_to":"9a629dbe_a0d2e032","updated":"2016-11-08 13:29:43.000000000","message":"Instead of having a big patch fixing every instance, makes more sense that new code stops using the dictionary notation.  That way there won\u0027t be the race problem between that big patch and another driver patches that would lead to not having everything moved to attribute notation.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"4192ee19c3d03316b4fe0f41aa430890ba8e3282","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector,"},{"line_number":179,"context_line":"                   \u0027lun_id\u0027: lun_id})"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":182,"context_line":"        volume_attributes \u003d self._helpers.get_vdisk_attributes(volume_name)"},{"line_number":183,"context_line":"        if volume_attributes is None:"},{"line_number":184,"context_line":"            msg \u003d (_(\u0027_get_single_iscsi_data: Failed to get attributes\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_8e868263","line":181,"range":{"start_line":181,"start_character":0,"end_line":181,"end_character":36},"in_reply_to":"9a629dbe_e55e6ae8","updated":"2016-11-09 09:22:36.000000000","message":"Hi Gorka, thanks a lot for your comments. It is addressed in new patch.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"b36312c21167b9ca07ac78dcdec96fe85a395092","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector,"},{"line_number":179,"context_line":"                   \u0027lun_id\u0027: lun_id})"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        volume_name \u003d volume[\u0027name\u0027]"},{"line_number":182,"context_line":"        volume_attributes \u003d self._helpers.get_vdisk_attributes(volume_name)"},{"line_number":183,"context_line":"        if volume_attributes is None:"},{"line_number":184,"context_line":"            msg \u003d (_(\u0027_get_single_iscsi_data: Failed to get attributes\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_a0d2e032","line":181,"range":{"start_line":181,"start_character":0,"end_line":181,"end_character":36},"in_reply_to":"ba5da102_ac773b07","updated":"2016-11-07 12:00:00.000000000","message":"Hi Gorka, thanks a lot for your review. Since all the attributes access is using as dictionary in the whole file. I prefer to open another ticket to address it and update the whole file, rather than change it a little here.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        for node in self._state[\u0027storage_nodes\u0027].values():"},{"line_number":204,"context_line":"            if self.protocol not in node[\u0027enabled_protocols\u0027]:"},{"line_number":205,"context_line":"                continue"},{"line_number":206,"context_line":"            if node[\u0027id\u0027] \u003d\u003d preferred_node:"},{"line_number":207,"context_line":"                preferred_node_entry \u003d node"},{"line_number":208,"context_line":"            if node[\u0027IO_group\u0027] \u003d\u003d IO_group:"},{"line_number":209,"context_line":"                io_group_nodes.append(node)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        if not len(io_group_nodes):"},{"line_number":212,"context_line":"            msg \u003d (_(\u0027_get_single_iscsi_data: No node found in \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_0c390742","line":209,"range":{"start_line":206,"start_character":0,"end_line":209,"end_character":43},"updated":"2016-11-04 09:18:58.000000000","message":"?: Wouldn\u0027t it be better like this?\n\n if node[\u0027IO_group\u0027] !\u003d IO_group:\n     continue\n io_group_nodes.append(node)\n if node[\u0027id\u0027] \u003d\u003d preferred_node:\n     preferred_node_entry \u003d node","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"462a39c1e057a4f58e755e02a2a8ec134e972f7d","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        for node in self._state[\u0027storage_nodes\u0027].values():"},{"line_number":204,"context_line":"            if self.protocol not in node[\u0027enabled_protocols\u0027]:"},{"line_number":205,"context_line":"                continue"},{"line_number":206,"context_line":"            if node[\u0027id\u0027] \u003d\u003d preferred_node:"},{"line_number":207,"context_line":"                preferred_node_entry \u003d node"},{"line_number":208,"context_line":"            if node[\u0027IO_group\u0027] \u003d\u003d IO_group:"},{"line_number":209,"context_line":"                io_group_nodes.append(node)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        if not len(io_group_nodes):"},{"line_number":212,"context_line":"            msg \u003d (_(\u0027_get_single_iscsi_data: No node found in \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_65fa5abf","line":209,"range":{"start_line":206,"start_character":0,"end_line":209,"end_character":43},"in_reply_to":"9a629dbe_406ae41b","updated":"2016-11-08 13:29:43.000000000","message":"I don\u0027t see any change in the latest patch regarding this.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"4192ee19c3d03316b4fe0f41aa430890ba8e3282","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        for node in self._state[\u0027storage_nodes\u0027].values():"},{"line_number":204,"context_line":"            if self.protocol not in node[\u0027enabled_protocols\u0027]:"},{"line_number":205,"context_line":"                continue"},{"line_number":206,"context_line":"            if node[\u0027id\u0027] \u003d\u003d preferred_node:"},{"line_number":207,"context_line":"                preferred_node_entry \u003d node"},{"line_number":208,"context_line":"            if node[\u0027IO_group\u0027] \u003d\u003d IO_group:"},{"line_number":209,"context_line":"                io_group_nodes.append(node)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        if not len(io_group_nodes):"},{"line_number":212,"context_line":"            msg \u003d (_(\u0027_get_single_iscsi_data: No node found in \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_6f48555c","line":209,"range":{"start_line":206,"start_character":0,"end_line":209,"end_character":43},"in_reply_to":"9a629dbe_65fa5abf","updated":"2016-11-09 09:22:36.000000000","message":"Thanks a lot for your comments. It is addressed in new patch.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"b36312c21167b9ca07ac78dcdec96fe85a395092","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        for node in self._state[\u0027storage_nodes\u0027].values():"},{"line_number":204,"context_line":"            if self.protocol not in node[\u0027enabled_protocols\u0027]:"},{"line_number":205,"context_line":"                continue"},{"line_number":206,"context_line":"            if node[\u0027id\u0027] \u003d\u003d preferred_node:"},{"line_number":207,"context_line":"                preferred_node_entry \u003d node"},{"line_number":208,"context_line":"            if node[\u0027IO_group\u0027] \u003d\u003d IO_group:"},{"line_number":209,"context_line":"                io_group_nodes.append(node)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        if not len(io_group_nodes):"},{"line_number":212,"context_line":"            msg \u003d (_(\u0027_get_single_iscsi_data: No node found in \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_406ae41b","line":209,"range":{"start_line":206,"start_character":0,"end_line":209,"end_character":43},"in_reply_to":"ba5da102_0c390742","updated":"2016-11-07 12:00:00.000000000","message":"Thanks a lot for your comments and it is addressed in new patch.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        properties \u003d {}"},{"line_number":225,"context_line":"        properties[\u0027target_discovered\u0027] \u003d False"},{"line_number":226,"context_line":"        properties[\u0027target_lun\u0027] \u003d lun_id"},{"line_number":227,"context_line":"        properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        if len(preferred_node_entry[\u0027ipv4\u0027]):"},{"line_number":230,"context_line":"            ipaddr \u003d preferred_node_entry[\u0027ipv4\u0027][0]"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_523634e8","line":227,"range":{"start_line":227,"start_character":34,"end_line":227,"end_character":46},"updated":"2016-11-04 09:18:58.000000000","message":"-1: volume.id","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            LOG.warning(_LW(\u0027_get_single_iscsi_data: Did not find a \u0027"},{"line_number":222,"context_line":"                            \u0027preferred node for volume %s.\u0027), volume_name)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        properties \u003d {}"},{"line_number":225,"context_line":"        properties[\u0027target_discovered\u0027] \u003d False"},{"line_number":226,"context_line":"        properties[\u0027target_lun\u0027] \u003d lun_id"},{"line_number":227,"context_line":"        properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        if len(preferred_node_entry[\u0027ipv4\u0027]):"},{"line_number":230,"context_line":"            ipaddr \u003d preferred_node_entry[\u0027ipv4\u0027][0]"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_2c25eb09","line":227,"range":{"start_line":224,"start_character":0,"end_line":227,"end_character":46},"updated":"2016-11-04 09:18:58.000000000","message":"nit:\n\n properties \u003d {\n     \u0027target_discovered\u0027 \u003d False\n     \u0027target_lun\u0027 \u003d lun_id\n     \u0027volume_id\u0027 \u003d volume.id\n }","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"b36312c21167b9ca07ac78dcdec96fe85a395092","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            LOG.warning(_LW(\u0027_get_single_iscsi_data: Did not find a \u0027"},{"line_number":222,"context_line":"                            \u0027preferred node for volume %s.\u0027), volume_name)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        properties \u003d {}"},{"line_number":225,"context_line":"        properties[\u0027target_discovered\u0027] \u003d False"},{"line_number":226,"context_line":"        properties[\u0027target_lun\u0027] \u003d lun_id"},{"line_number":227,"context_line":"        properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        if len(preferred_node_entry[\u0027ipv4\u0027]):"},{"line_number":230,"context_line":"            ipaddr \u003d preferred_node_entry[\u0027ipv4\u0027][0]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_6b6269da","line":227,"range":{"start_line":224,"start_character":0,"end_line":227,"end_character":46},"in_reply_to":"ba5da102_2c25eb09","updated":"2016-11-07 12:00:00.000000000","message":"Hi Gorka, thanks a lot for your comments and it is addressed in new patch.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        properties[\u0027target_lun\u0027] \u003d lun_id"},{"line_number":227,"context_line":"        properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        if len(preferred_node_entry[\u0027ipv4\u0027]):"},{"line_number":230,"context_line":"            ipaddr \u003d preferred_node_entry[\u0027ipv4\u0027][0]"},{"line_number":231,"context_line":"        else:"},{"line_number":232,"context_line":"            ipaddr \u003d preferred_node_entry[\u0027ipv6\u0027][0]"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_2c6c0b36","line":229,"updated":"2016-11-04 09:18:58.000000000","message":"nit: More pythonic:\n\n if preferred_node_entry[\u0027ipv4\u0027]:","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"b36312c21167b9ca07ac78dcdec96fe85a395092","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        properties[\u0027target_lun\u0027] \u003d lun_id"},{"line_number":227,"context_line":"        properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        if len(preferred_node_entry[\u0027ipv4\u0027]):"},{"line_number":230,"context_line":"            ipaddr \u003d preferred_node_entry[\u0027ipv4\u0027][0]"},{"line_number":231,"context_line":"        else:"},{"line_number":232,"context_line":"            ipaddr \u003d preferred_node_entry[\u0027ipv6\u0027][0]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_6bbee900","line":229,"in_reply_to":"ba5da102_2c6c0b36","updated":"2016-11-07 12:00:00.000000000","message":"Done","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        properties[\u0027target_portal\u0027] \u003d \u0027%s:%s\u0027 % (ipaddr, \u00273260\u0027)"},{"line_number":234,"context_line":"        properties[\u0027target_iqn\u0027] \u003d preferred_node_entry[\u0027iscsi_name\u0027]"},{"line_number":235,"context_line":"        if chap_secret:"},{"line_number":236,"context_line":"            properties[\u0027auth_method\u0027] \u003d \u0027CHAP\u0027"},{"line_number":237,"context_line":"            properties[\u0027auth_username\u0027] \u003d connector[\u0027initiator\u0027]"},{"line_number":238,"context_line":"            properties[\u0027auth_password\u0027] \u003d chap_secret"},{"line_number":239,"context_line":"            properties[\u0027discovery_auth_method\u0027] \u003d \u0027CHAP\u0027"},{"line_number":240,"context_line":"            properties[\u0027discovery_auth_username\u0027] \u003d ("},{"line_number":241,"context_line":"                connector[\u0027initiator\u0027])"},{"line_number":242,"context_line":"            properties[\u0027discovery_auth_password\u0027] \u003d chap_secret"},{"line_number":243,"context_line":"        LOG.debug(\u0027leave: _get_single_iscsi_data:\\n volume: %(vol)s\\n \u0027"},{"line_number":244,"context_line":"                  \u0027connector: %(conn)s\\n lun_id: %(lun_id)s\\n \u0027"},{"line_number":245,"context_line":"                  \u0027properties: %(prop)s\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_2c016b3a","line":242,"range":{"start_line":236,"start_character":0,"end_line":242,"end_character":63},"updated":"2016-11-04 09:18:58.000000000","message":"nit: Nicer like this:\n\n properties.update(\n     auth_method\u003dCHAP\u0027,\n     auth_username\u003dconnector[\u0027initiator\u0027],\n     auth_password\u003dchap_secret,\n     discovery_auth_method\u003d\u0027CHAP\u0027,\n     discovery_auth_username\u003dconnector[\u0027initiator\u0027],\n     discovery_auth_password\u003dchap_secret,\n )\n\n-1: This is common for single and multipath, should be in another common method called from _do_initialize_connection.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"b36312c21167b9ca07ac78dcdec96fe85a395092","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        properties[\u0027target_portal\u0027] \u003d \u0027%s:%s\u0027 % (ipaddr, \u00273260\u0027)"},{"line_number":234,"context_line":"        properties[\u0027target_iqn\u0027] \u003d preferred_node_entry[\u0027iscsi_name\u0027]"},{"line_number":235,"context_line":"        if chap_secret:"},{"line_number":236,"context_line":"            properties[\u0027auth_method\u0027] \u003d \u0027CHAP\u0027"},{"line_number":237,"context_line":"            properties[\u0027auth_username\u0027] \u003d connector[\u0027initiator\u0027]"},{"line_number":238,"context_line":"            properties[\u0027auth_password\u0027] \u003d chap_secret"},{"line_number":239,"context_line":"            properties[\u0027discovery_auth_method\u0027] \u003d \u0027CHAP\u0027"},{"line_number":240,"context_line":"            properties[\u0027discovery_auth_username\u0027] \u003d ("},{"line_number":241,"context_line":"                connector[\u0027initiator\u0027])"},{"line_number":242,"context_line":"            properties[\u0027discovery_auth_password\u0027] \u003d chap_secret"},{"line_number":243,"context_line":"        LOG.debug(\u0027leave: _get_single_iscsi_data:\\n volume: %(vol)s\\n \u0027"},{"line_number":244,"context_line":"                  \u0027connector: %(conn)s\\n lun_id: %(lun_id)s\\n \u0027"},{"line_number":245,"context_line":"                  \u0027properties: %(prop)s\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_cbf2956f","line":242,"range":{"start_line":236,"start_character":0,"end_line":242,"end_character":63},"in_reply_to":"ba5da102_2c016b3a","updated":"2016-11-07 12:00:00.000000000","message":"Hi Gorka, thanks a lot for your comments and it is addressed in new patch.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        LOG.debug(\u0027leave: _get_single_iscsi_data:\\n volume: %(vol)s\\n \u0027"},{"line_number":244,"context_line":"                  \u0027connector: %(conn)s\\n lun_id: %(lun_id)s\\n \u0027"},{"line_number":245,"context_line":"                  \u0027properties: %(prop)s\u0027,"},{"line_number":246,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector, \u0027lun_id\u0027: lun_id,"},{"line_number":247,"context_line":"                   \u0027prop\u0027: properties})"},{"line_number":248,"context_line":"        return properties"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_ec9db30b","line":246,"range":{"start_line":246,"start_character":26,"end_line":246,"end_character":38},"updated":"2016-11-04 09:18:58.000000000","message":"-1: volume.id","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"b36312c21167b9ca07ac78dcdec96fe85a395092","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        LOG.debug(\u0027leave: _get_single_iscsi_data:\\n volume: %(vol)s\\n \u0027"},{"line_number":244,"context_line":"                  \u0027connector: %(conn)s\\n lun_id: %(lun_id)s\\n \u0027"},{"line_number":245,"context_line":"                  \u0027properties: %(prop)s\u0027,"},{"line_number":246,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector, \u0027lun_id\u0027: lun_id,"},{"line_number":247,"context_line":"                   \u0027prop\u0027: properties})"},{"line_number":248,"context_line":"        return properties"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_6baa691b","line":246,"range":{"start_line":246,"start_character":26,"end_line":246,"end_character":38},"in_reply_to":"ba5da102_ec9db30b","updated":"2016-11-07 12:00:00.000000000","message":"Done","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":250,"context_line":"    def _get_multi_iscsi_data(self, volume, connector, lun_id, properties):"},{"line_number":251,"context_line":"        LOG.debug(\u0027enter: _get_multi_iscsi_data: volume %(vol)s with \u0027"},{"line_number":252,"context_line":"                  \u0027connector %(conn)s lun_id %(lun_id)s\u0027,"},{"line_number":253,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector,"},{"line_number":254,"context_line":"                   \u0027lun_id\u0027: lun_id})"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_ecb4d383","line":253,"range":{"start_line":253,"start_character":26,"end_line":253,"end_character":38},"updated":"2016-11-04 09:18:58.000000000","message":"-1: volume.id","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"4192ee19c3d03316b4fe0f41aa430890ba8e3282","unresolved":false,"context_lines":[{"line_number":250,"context_line":"    def _get_multi_iscsi_data(self, volume, connector, lun_id, properties):"},{"line_number":251,"context_line":"        LOG.debug(\u0027enter: _get_multi_iscsi_data: volume %(vol)s with \u0027"},{"line_number":252,"context_line":"                  \u0027connector %(conn)s lun_id %(lun_id)s\u0027,"},{"line_number":253,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector,"},{"line_number":254,"context_line":"                   \u0027lun_id\u0027: lun_id})"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_ee97fe8d","line":253,"range":{"start_line":253,"start_character":26,"end_line":253,"end_character":38},"in_reply_to":"9a629dbe_8ba7bd4e","updated":"2016-11-09 09:22:36.000000000","message":"Done","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"b36312c21167b9ca07ac78dcdec96fe85a395092","unresolved":false,"context_lines":[{"line_number":250,"context_line":"    def _get_multi_iscsi_data(self, volume, connector, lun_id, properties):"},{"line_number":251,"context_line":"        LOG.debug(\u0027enter: _get_multi_iscsi_data: volume %(vol)s with \u0027"},{"line_number":252,"context_line":"                  \u0027connector %(conn)s lun_id %(lun_id)s\u0027,"},{"line_number":253,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector,"},{"line_number":254,"context_line":"                   \u0027lun_id\u0027: lun_id})"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_8ba7bd4e","line":253,"range":{"start_line":253,"start_character":26,"end_line":253,"end_character":38},"in_reply_to":"ba5da102_ecb4d383","updated":"2016-11-07 12:00:00.000000000","message":"I prefer to open another ticket to address it and update the whole file","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        except Exception as ex:"},{"line_number":259,"context_line":"            msg \u003d (_(\u0027_get_multi_iscsi_data: Failed to \u0027"},{"line_number":260,"context_line":"                     \u0027get port ip because of exception: \u0027"},{"line_number":261,"context_line":"                     \u0027%s.\u0027) % six.text_type(ex))"},{"line_number":262,"context_line":"            LOG.error(msg)"},{"line_number":263,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_ec6bf3ef","line":261,"range":{"start_line":261,"start_character":30,"end_line":261,"end_character":44},"updated":"2016-11-04 09:18:58.000000000","message":"-1: Not necessary to call six.text_type","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"b36312c21167b9ca07ac78dcdec96fe85a395092","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        except Exception as ex:"},{"line_number":259,"context_line":"            msg \u003d (_(\u0027_get_multi_iscsi_data: Failed to \u0027"},{"line_number":260,"context_line":"                     \u0027get port ip because of exception: \u0027"},{"line_number":261,"context_line":"                     \u0027%s.\u0027) % six.text_type(ex))"},{"line_number":262,"context_line":"            LOG.error(msg)"},{"line_number":263,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_603e03ba","line":261,"range":{"start_line":261,"start_character":30,"end_line":261,"end_character":44},"in_reply_to":"ba5da102_ec6bf3ef","updated":"2016-11-07 12:00:00.000000000","message":"Hi Gorka, thanks a lot for your comments and remove calling six.text_type.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                if ((ip_data[\u0027state\u0027] \u003d\u003d \u0027configured\u0027 and"},{"line_number":275,"context_line":"                        link_state \u003d\u003d \u0027active\u0027) or"},{"line_number":276,"context_line":"                        ip_data[\u0027state\u0027] \u003d\u003d \u0027online\u0027):"},{"line_number":277,"context_line":"                    valid_port \u003d (ip_data[\u0027IP_address\u0027] if"},{"line_number":278,"context_line":"                                  len(ip_data[\u0027IP_address\u0027])"},{"line_number":279,"context_line":"                                  else ip_data[\u0027IP_address_6\u0027])"},{"line_number":280,"context_line":"                if valid_port:"},{"line_number":281,"context_line":"                    properties[\u0027target_portals\u0027].append("},{"line_number":282,"context_line":"                        \u0027%s:%s\u0027 % (valid_port, \u00273260\u0027))"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_0c166755","line":279,"range":{"start_line":277,"start_character":0,"end_line":279,"end_character":63},"updated":"2016-11-04 09:18:58.000000000","message":"nit: More pythonic\n\n valid_port \u003d (ip_data[\u0027IP_address\u0027] or\n               ip_data[\u0027IP_address_6\u0027])","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"4192ee19c3d03316b4fe0f41aa430890ba8e3282","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                if ((ip_data[\u0027state\u0027] \u003d\u003d \u0027configured\u0027 and"},{"line_number":275,"context_line":"                        link_state \u003d\u003d \u0027active\u0027) or"},{"line_number":276,"context_line":"                        ip_data[\u0027state\u0027] \u003d\u003d \u0027online\u0027):"},{"line_number":277,"context_line":"                    valid_port \u003d (ip_data[\u0027IP_address\u0027] if"},{"line_number":278,"context_line":"                                  len(ip_data[\u0027IP_address\u0027])"},{"line_number":279,"context_line":"                                  else ip_data[\u0027IP_address_6\u0027])"},{"line_number":280,"context_line":"                if valid_port:"},{"line_number":281,"context_line":"                    properties[\u0027target_portals\u0027].append("},{"line_number":282,"context_line":"                        \u0027%s:%s\u0027 % (valid_port, \u00273260\u0027))"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_6eea0e11","line":279,"range":{"start_line":277,"start_character":0,"end_line":279,"end_character":63},"in_reply_to":"9a629dbe_804b1759","updated":"2016-11-09 09:22:36.000000000","message":"Done","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"b36312c21167b9ca07ac78dcdec96fe85a395092","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                if ((ip_data[\u0027state\u0027] \u003d\u003d \u0027configured\u0027 and"},{"line_number":275,"context_line":"                        link_state \u003d\u003d \u0027active\u0027) or"},{"line_number":276,"context_line":"                        ip_data[\u0027state\u0027] \u003d\u003d \u0027online\u0027):"},{"line_number":277,"context_line":"                    valid_port \u003d (ip_data[\u0027IP_address\u0027] if"},{"line_number":278,"context_line":"                                  len(ip_data[\u0027IP_address\u0027])"},{"line_number":279,"context_line":"                                  else ip_data[\u0027IP_address_6\u0027])"},{"line_number":280,"context_line":"                if valid_port:"},{"line_number":281,"context_line":"                    properties[\u0027target_portals\u0027].append("},{"line_number":282,"context_line":"                        \u0027%s:%s\u0027 % (valid_port, \u00273260\u0027))"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_804b1759","line":279,"range":{"start_line":277,"start_character":0,"end_line":279,"end_character":63},"in_reply_to":"ba5da102_0c166755","updated":"2016-11-07 12:00:00.000000000","message":"Hi Gorka, thanks a lot for your comments and it is addressed in new patch.","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"baf76ab4ad9f0a9cd5b68f68727530d24f237c27","unresolved":false,"context_lines":[{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        if not len(properties[\u0027target_portals\u0027]):"},{"line_number":288,"context_line":"            msg \u003d (_(\u0027_get_multi_iscsi_data: Failed to find valid port \u0027"},{"line_number":289,"context_line":"                     \u0027for volume %s.\u0027) % volume[\u0027name\u0027])"},{"line_number":290,"context_line":"            LOG.error(msg)"},{"line_number":291,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":292,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_a724b4b2","line":289,"range":{"start_line":289,"start_character":41,"end_line":289,"end_character":55},"updated":"2016-11-04 09:18:58.000000000","message":"-1: volume.name","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"4192ee19c3d03316b4fe0f41aa430890ba8e3282","unresolved":false,"context_lines":[{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        if not len(properties[\u0027target_portals\u0027]):"},{"line_number":288,"context_line":"            msg \u003d (_(\u0027_get_multi_iscsi_data: Failed to find valid port \u0027"},{"line_number":289,"context_line":"                     \u0027for volume %s.\u0027) % volume[\u0027name\u0027])"},{"line_number":290,"context_line":"            LOG.error(msg)"},{"line_number":291,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":292,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_8eeda227","line":289,"range":{"start_line":289,"start_character":41,"end_line":289,"end_character":55},"in_reply_to":"9a629dbe_a0001bac","updated":"2016-11-09 09:22:36.000000000","message":"Done","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"b36312c21167b9ca07ac78dcdec96fe85a395092","unresolved":false,"context_lines":[{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        if not len(properties[\u0027target_portals\u0027]):"},{"line_number":288,"context_line":"            msg \u003d (_(\u0027_get_multi_iscsi_data: Failed to find valid port \u0027"},{"line_number":289,"context_line":"                     \u0027for volume %s.\u0027) % volume[\u0027name\u0027])"},{"line_number":290,"context_line":"            LOG.error(msg)"},{"line_number":291,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":292,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a629dbe_a0001bac","line":289,"range":{"start_line":289,"start_character":41,"end_line":289,"end_character":55},"in_reply_to":"ba5da102_a724b4b2","updated":"2016-11-07 12:00:00.000000000","message":"To keep the consistent, I will open another ticket to address it and update the whole file","commit_id":"3bfb2febaf6d1a60306d04be735ccf45a3b3f144"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6c024457f4fc501432b73dbeaa53fafa41d6de83","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        properties[\u0027target_portal\u0027] \u003d \u0027%s:%s\u0027 % (ipaddr, \u00273260\u0027)"},{"line_number":233,"context_line":"        properties[\u0027target_iqn\u0027] \u003d preferred_node_entry[\u0027iscsi_name\u0027]"},{"line_number":234,"context_line":"        if chap_secret:"},{"line_number":235,"context_line":"            properties.update({\u0027auth_method\u0027: \u0027CHAP\u0027,"},{"line_number":236,"context_line":"                               \u0027auth_username\u0027: connector[\u0027initiator\u0027],"},{"line_number":237,"context_line":"                               \u0027auth_password\u0027: chap_secret,"},{"line_number":238,"context_line":"                               \u0027discovery_auth_method\u0027: \u0027CHAP\u0027,"},{"line_number":239,"context_line":"                               \u0027discovery_auth_username\u0027:"},{"line_number":240,"context_line":"                                   connector[\u0027initiator\u0027],"},{"line_number":241,"context_line":"                               \u0027discovery_auth_password\u0027: chap_secret})"},{"line_number":242,"context_line":"        LOG.debug(\u0027leave: _get_single_iscsi_data:\\n volume: %(vol)s\\n \u0027"},{"line_number":243,"context_line":"                  \u0027connector: %(conn)s\\n lun_id: %(lun_id)s\\n \u0027"},{"line_number":244,"context_line":"                  \u0027properties: %(prop)s\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a629dbe_a5f2b2d0","line":241,"range":{"start_line":235,"start_character":0,"end_line":241,"end_character":71},"updated":"2016-11-08 13:32:43.000000000","message":"nit: There is no need to create a dictionary to pass it to update, keyword arguments work just fine:\n\n property.update(auth_method\u003d\u0027CHAP\u0027, ...)","commit_id":"f98bee862f53ca2fb84bc070169dffae5f68dcc5"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"5d948d199bc4c84bfbe769fc9401a9e5b5b96818","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        properties[\u0027target_portal\u0027] \u003d \u0027%s:%s\u0027 % (ipaddr, \u00273260\u0027)"},{"line_number":233,"context_line":"        properties[\u0027target_iqn\u0027] \u003d preferred_node_entry[\u0027iscsi_name\u0027]"},{"line_number":234,"context_line":"        if chap_secret:"},{"line_number":235,"context_line":"            properties.update({\u0027auth_method\u0027: \u0027CHAP\u0027,"},{"line_number":236,"context_line":"                               \u0027auth_username\u0027: connector[\u0027initiator\u0027],"},{"line_number":237,"context_line":"                               \u0027auth_password\u0027: chap_secret,"},{"line_number":238,"context_line":"                               \u0027discovery_auth_method\u0027: \u0027CHAP\u0027,"},{"line_number":239,"context_line":"                               \u0027discovery_auth_username\u0027:"},{"line_number":240,"context_line":"                                   connector[\u0027initiator\u0027],"},{"line_number":241,"context_line":"                               \u0027discovery_auth_password\u0027: chap_secret})"},{"line_number":242,"context_line":"        LOG.debug(\u0027leave: _get_single_iscsi_data:\\n volume: %(vol)s\\n \u0027"},{"line_number":243,"context_line":"                  \u0027connector: %(conn)s\\n lun_id: %(lun_id)s\\n \u0027"},{"line_number":244,"context_line":"                  \u0027properties: %(prop)s\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a629dbe_0f435943","line":241,"range":{"start_line":235,"start_character":0,"end_line":241,"end_character":71},"in_reply_to":"9a629dbe_a5f2b2d0","updated":"2016-11-09 09:23:07.000000000","message":"Thanks a lot for your comments. It is addressed in new patch.","commit_id":"f98bee862f53ca2fb84bc070169dffae5f68dcc5"}]}
