)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"9bec03b6ed573c13a83a61ff48bb66c71203d16a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7c73b850_b54132d2","updated":"2026-03-13 06:55:04.000000000","message":"recheck","commit_id":"16f82ee605994de838d3b154b5c81df37278e086"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"acbc236a79e2c726aaa3aa3e2c1d2c16a8af0eb7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a6304ec3_21866a7d","updated":"2026-03-18 21:30:20.000000000","message":"Left a few more comments.","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"28482b1df25d5a37035e6ff222b1f3f3dda71566","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"46b75bbd_9d0d064f","updated":"2026-03-17 05:48:52.000000000","message":"can you check if message are as per your expectation.","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"6d1127fb8caf1cebc7bb17b51b5ac5d1c5a32e5e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"de2f1b92_555d3395","updated":"2026-03-16 09:18:07.000000000","message":"recheck","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"c97cad7babad0d747f21aa27ccf34f0e7116c125","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0478f88e_5d392d70","updated":"2026-03-17 14:17:26.000000000","message":"recheck devstack-plugin-nfs-tempest-full - 37 failures, most look like timeouts waiting for resources to build, probably an environmental thing","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"84189b176a42a91c22d8f00d2c7905b7b4491740","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"612fd8cb_a47a900b","updated":"2026-03-17 16:24:05.000000000","message":"see comments inline","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fbeaa06230ec236314b7e559483272d2690dc0d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7c00ebd6_a9c2c5ca","updated":"2026-04-02 07:47:46.000000000","message":"From my understanding, the \u0027CMMVC5867E\u0027 occurs due to outdated cache and requires a restart of the cinder-volume service.\nWe are also adding an additional handling of refresh the information on the fly but as noted inline, that could lead to potential race conditions.\nI can see two ways forward to move this patch:\n1. Address the concerns about tha race conditions inline (might require extensive testing -- or could be straightforward)\n2. Remove the \"smart\" handling of hotplugging the cache information -- might lead to a bad customer experience of restarting the service but will potentially avoid causing more issues","commit_id":"c6d2ee4a745807c31a5c30795cc258f8f6374949"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"f5c3fc435f4700d8e3ef48507353e4cba96ca3ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1facca68_2b11d3bb","updated":"2026-03-24 05:36:50.000000000","message":"Hello Brian and Jayaanand,\n\nThank you so much for the review comments! I have addressed them in the new patchset.","commit_id":"c6d2ee4a745807c31a5c30795cc258f8f6374949"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a67dac3740966bcc9df6e66e1f588065c519359e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0423bc24_465e28b9","updated":"2026-03-31 15:26:29.000000000","message":"LGTM","commit_id":"c6d2ee4a745807c31a5c30795cc258f8f6374949"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a394a0b595ff69f0a2a3c4c5e04422db279b5ca1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9e6b51d4_88283959","updated":"2026-04-13 13:33:54.000000000","message":"Resetting my vote until Rajat\u0027s concerns are addressed.","commit_id":"c6d2ee4a745807c31a5c30795cc258f8f6374949"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"2cd98e8b853a934bf00a8993a7adc9840a8b571f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5233aeec_68d9d328","updated":"2026-03-25 21:58:35.000000000","message":"Revisions LGTM.  Only +1 because I don\u0027t see the IBM SVf CI responding on this patch (please correct me if I missed it).","commit_id":"c6d2ee4a745807c31a5c30795cc258f8f6374949"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7f673521357c650e1866042dcd9fe680f870970c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0c87e054_dc31b856","updated":"2026-03-31 14:02:36.000000000","message":"Third party CI is green, so upgrading my vote.","commit_id":"c6d2ee4a745807c31a5c30795cc258f8f6374949"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"c294c1b520fc57bba6288f2d35f8ab9e53a18fc7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3907efd9_fc5fca69","updated":"2026-03-25 06:04:44.000000000","message":"recheck","commit_id":"c6d2ee4a745807c31a5c30795cc258f8f6374949"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"5c4c2b19088651719aeefd82054f19965e07b51c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7b80e289_bb6337e3","in_reply_to":"1795e1d7_b58c0b66","updated":"2026-03-30 02:40:13.000000000","message":"Done","commit_id":"c6d2ee4a745807c31a5c30795cc258f8f6374949"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"950e5871dc371d7fa9f69f3e06bcd79b7d67b746","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1795e1d7_b58c0b66","in_reply_to":"5233aeec_68d9d328","updated":"2026-03-27 05:53:47.000000000","message":"IBM CI is now run. Please check latest run.","commit_id":"c6d2ee4a745807c31a5c30795cc258f8f6374949"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"00df139cbfd8c2540622e576ea745cb10197d840","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b74095dc_c8d1fc79","updated":"2026-04-28 08:59:29.000000000","message":"Hi Rajat,\n\nThanks for pointing out the race condition, please review the updated code.","commit_id":"b42174bece0dc0947a7b7631fe8aa9a3fd4faf8f"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"7ec9122de1b0c098b240ccc883e6e69f56cff931","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"54ea28f5_4f25c234","updated":"2026-04-29 06:22:22.000000000","message":"recheck devstack-plugin-nfs-tempest-full","commit_id":"b42174bece0dc0947a7b7631fe8aa9a3fd4faf8f"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_common.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"acbc236a79e2c726aaa3aa3e2c1d2c16a8af0eb7","unresolved":true,"context_lines":[{"line_number":1329,"context_line":"                wwpns.add(wwpn)"},{"line_number":1330,"context_line":"        return list(wwpns)"},{"line_number":1331,"context_line":""},{"line_number":1332,"context_line":"    def initialize_host_info(self):"},{"line_number":1333,"context_line":"        \"\"\"Get the host,wwpn,iscsi and store in Host_connector_info.\"\"\""},{"line_number":1334,"context_line":"        if not self.code_level:"},{"line_number":1335,"context_line":"            sys_info \u003d self.get_system_info()"}],"source_content_type":"text/x-python","patch_set":3,"id":"a53e4c85_3f24e948","line":1332,"updated":"2026-03-18 21:30:20.000000000","message":"The logic looks OK, but I just want to flag that there\u0027s no test coverage for the new code:\nhttps://297f7ce0eb505b008765-3c8895dd0cdc480d44345205db7c78f4.ssl.cf5.rackcdn.com/openstack/25ba1d0069e94de381a5aa6288b57b10/cover/z_da174c6a0dd05faf_storwize_svc_common_py.html#t1368\n\nOn the other hand, it looks like the old code now in the \u0027else\u0027 block is tested and the unit tests are passing, so that\u0027s good from a non-regression standpoint.  I know these kind of things are very tedious to write tests for, but maybe you can adapt whatever\u0027s testing the \"old\" code to test the new code (I didn\u0027t see an obvious unit test, but I also didn\u0027t spend a lot of time looking).","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"f5c3fc435f4700d8e3ef48507353e4cba96ca3ae","unresolved":false,"context_lines":[{"line_number":1329,"context_line":"                wwpns.add(wwpn)"},{"line_number":1330,"context_line":"        return list(wwpns)"},{"line_number":1331,"context_line":""},{"line_number":1332,"context_line":"    def initialize_host_info(self):"},{"line_number":1333,"context_line":"        \"\"\"Get the host,wwpn,iscsi and store in Host_connector_info.\"\"\""},{"line_number":1334,"context_line":"        if not self.code_level:"},{"line_number":1335,"context_line":"            sys_info \u003d self.get_system_info()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ab970d9_3931be2c","line":1332,"in_reply_to":"a53e4c85_3f24e948","updated":"2026-03-24 05:36:50.000000000","message":"Added test for the newly added code.","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"84189b176a42a91c22d8f00d2c7905b7b4491740","unresolved":true,"context_lines":[{"line_number":1341,"context_line":"            for port_data in hosts_info:"},{"line_number":1342,"context_line":"                if port_data[\u0027WWPN\u0027]:"},{"line_number":1343,"context_line":"                    if port_data[\u0027WWPN\u0027] not in \\"},{"line_number":1344,"context_line":"                            self.Host_connector_info[\u0027FC\u0027].keys():"},{"line_number":1345,"context_line":"                        self.Host_connector_info[\u0027FC\u0027][port_data[\u0027WWPN\u0027]] \u003d \\"},{"line_number":1346,"context_line":"                            port_data[\u0027host_name\u0027]"},{"line_number":1347,"context_line":"                elif port_data[\u0027iscsi_name\u0027]:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5b665584_74dd889b","line":1344,"range":{"start_line":1344,"start_character":58,"end_line":1344,"end_character":65},"updated":"2026-03-17 16:24:05.000000000","message":"don\u0027t need to use the keys() method since you\u0027re using \u0027not in\u0027 already","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"f5c3fc435f4700d8e3ef48507353e4cba96ca3ae","unresolved":false,"context_lines":[{"line_number":1341,"context_line":"            for port_data in hosts_info:"},{"line_number":1342,"context_line":"                if port_data[\u0027WWPN\u0027]:"},{"line_number":1343,"context_line":"                    if port_data[\u0027WWPN\u0027] not in \\"},{"line_number":1344,"context_line":"                            self.Host_connector_info[\u0027FC\u0027].keys():"},{"line_number":1345,"context_line":"                        self.Host_connector_info[\u0027FC\u0027][port_data[\u0027WWPN\u0027]] \u003d \\"},{"line_number":1346,"context_line":"                            port_data[\u0027host_name\u0027]"},{"line_number":1347,"context_line":"                elif port_data[\u0027iscsi_name\u0027]:"}],"source_content_type":"text/x-python","patch_set":3,"id":"a91e8c12_a39fda67","line":1344,"range":{"start_line":1344,"start_character":58,"end_line":1344,"end_character":65},"in_reply_to":"5b665584_74dd889b","updated":"2026-03-24 05:36:50.000000000","message":"Done","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"28482b1df25d5a37035e6ff222b1f3f3dda71566","unresolved":true,"context_lines":[{"line_number":1417,"context_line":"                    if \"CMMVC5867E\" in excp.msg:"},{"line_number":1418,"context_line":"                        msg \u003d (_(\u0027Port already assigned to host. Driver \u0027"},{"line_number":1419,"context_line":"                                 \u0027cache is outdated. Restart cinder and \u0027"},{"line_number":1420,"context_line":"                                 \u0027retry. %(conn)s\u0027), {\u0027conn\u0027: connector})"},{"line_number":1421,"context_line":"                        LOG.error(msg)"},{"line_number":1422,"context_line":"                        raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":1423,"context_line":"            if iscsi and \u0027initiator\u0027 in connector:"}],"source_content_type":"text/x-python","patch_set":3,"id":"10ee7eb1_25086163","line":1420,"updated":"2026-03-17 05:48:52.000000000","message":", should be replaced by %","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"84189b176a42a91c22d8f00d2c7905b7b4491740","unresolved":true,"context_lines":[{"line_number":1417,"context_line":"                    if \"CMMVC5867E\" in excp.msg:"},{"line_number":1418,"context_line":"                        msg \u003d (_(\u0027Port already assigned to host. Driver \u0027"},{"line_number":1419,"context_line":"                                 \u0027cache is outdated. Restart cinder and \u0027"},{"line_number":1420,"context_line":"                                 \u0027retry. %(conn)s\u0027), {\u0027conn\u0027: connector})"},{"line_number":1421,"context_line":"                        LOG.error(msg)"},{"line_number":1422,"context_line":"                        raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":1423,"context_line":"            if iscsi and \u0027initiator\u0027 in connector:"}],"source_content_type":"text/x-python","patch_set":3,"id":"a76e7424_89b9cfe2","line":1420,"in_reply_to":"10ee7eb1_25086163","updated":"2026-03-17 16:24:05.000000000","message":"In addition to what jayaanand has pointed out, \u0027connector\u0027 is a dict of stuff ... does it contain any passwords?  If so, use the oslo_utils.strutils.mask_dict_password() function.  Also, do we really want to expose the entire \u0027connector\u0027 in the exception?  Might be better to keep that in the log and have a more generic message in the exception.","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"f5c3fc435f4700d8e3ef48507353e4cba96ca3ae","unresolved":false,"context_lines":[{"line_number":1417,"context_line":"                    if \"CMMVC5867E\" in excp.msg:"},{"line_number":1418,"context_line":"                        msg \u003d (_(\u0027Port already assigned to host. Driver \u0027"},{"line_number":1419,"context_line":"                                 \u0027cache is outdated. Restart cinder and \u0027"},{"line_number":1420,"context_line":"                                 \u0027retry. %(conn)s\u0027), {\u0027conn\u0027: connector})"},{"line_number":1421,"context_line":"                        LOG.error(msg)"},{"line_number":1422,"context_line":"                        raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":1423,"context_line":"            if iscsi and \u0027initiator\u0027 in connector:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dca12597_775258e8","line":1420,"in_reply_to":"a76e7424_89b9cfe2","updated":"2026-03-24 05:36:50.000000000","message":"I have replaced connector dict with only host_name and relevant WWPN.","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"28482b1df25d5a37035e6ff222b1f3f3dda71566","unresolved":true,"context_lines":[{"line_number":1561,"context_line":"                if \"CMMVC5867E\" in excp.msg:"},{"line_number":1562,"context_line":"                    msg \u003d (_(\u0027Port already assigned to host. Driver \u0027"},{"line_number":1563,"context_line":"                             \u0027cache is outdated. Restart cinder and \u0027"},{"line_number":1564,"context_line":"                             \u0027retry. %(conn)s\u0027), {\u0027conn\u0027: connector})"},{"line_number":1565,"context_line":"                    LOG.error(msg)"},{"line_number":1566,"context_line":"                    raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":1567,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"682f5087_be798c81","line":1564,"updated":"2026-03-17 05:48:52.000000000","message":", should be replaced by %","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"f5c3fc435f4700d8e3ef48507353e4cba96ca3ae","unresolved":false,"context_lines":[{"line_number":1561,"context_line":"                if \"CMMVC5867E\" in excp.msg:"},{"line_number":1562,"context_line":"                    msg \u003d (_(\u0027Port already assigned to host. Driver \u0027"},{"line_number":1563,"context_line":"                             \u0027cache is outdated. Restart cinder and \u0027"},{"line_number":1564,"context_line":"                             \u0027retry. %(conn)s\u0027), {\u0027conn\u0027: connector})"},{"line_number":1565,"context_line":"                    LOG.error(msg)"},{"line_number":1566,"context_line":"                    raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":1567,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"20a4d0e4_20b17ae8","line":1564,"in_reply_to":"682f5087_be798c81","updated":"2026-03-24 05:36:50.000000000","message":"Done","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fbeaa06230ec236314b7e559483272d2690dc0d3","unresolved":true,"context_lines":[{"line_number":1335,"context_line":"            sys_info \u003d self.get_system_info()"},{"line_number":1336,"context_line":"            self.code_level \u003d sys_info[\u0027code_level\u0027]"},{"line_number":1337,"context_line":"        if self.code_level \u003e (8, 6, 0, 0):"},{"line_number":1338,"context_line":"            # Resetting host connector info and getting latest info"},{"line_number":1339,"context_line":"            self.Host_connector_info \u003d {\"FC\": {}, \"ISCSI\": {}}"},{"line_number":1340,"context_line":"            hosts_info \u003d self.ssh.lshostports()"},{"line_number":1341,"context_line":"            for port_data in hosts_info:"},{"line_number":1342,"context_line":"                if port_data[\u0027WWPN\u0027]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ca83bb99_bbc8491c","line":1339,"range":{"start_line":1338,"start_character":0,"end_line":1339,"end_character":62},"updated":"2026-04-02 07:47:46.000000000","message":"The Host_connector_info dict is used in 4 methods\n\ninitialize_host_info\nget_host_from_host_info\ncreate_host\ndelete_host\n\nUpdating it here could lead to a race condition where some X operation is accessing the Host_connector_info in any of the 4 methods (let\u0027s say create_host) and we reset it here to empty dict leading to the other operation failing\n\nCan you verify that all the 4 methods consuming this dict are mutually exclusive i.e. proper locking is in place so the above situation doesn\u0027t occur.","commit_id":"c6d2ee4a745807c31a5c30795cc258f8f6374949"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"00df139cbfd8c2540622e576ea745cb10197d840","unresolved":true,"context_lines":[{"line_number":1335,"context_line":"            sys_info \u003d self.get_system_info()"},{"line_number":1336,"context_line":"            self.code_level \u003d sys_info[\u0027code_level\u0027]"},{"line_number":1337,"context_line":"        if self.code_level \u003e (8, 6, 0, 0):"},{"line_number":1338,"context_line":"            # Resetting host connector info and getting latest info"},{"line_number":1339,"context_line":"            self.Host_connector_info \u003d {\"FC\": {}, \"ISCSI\": {}}"},{"line_number":1340,"context_line":"            hosts_info \u003d self.ssh.lshostports()"},{"line_number":1341,"context_line":"            for port_data in hosts_info:"},{"line_number":1342,"context_line":"                if port_data[\u0027WWPN\u0027]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"631b039b_3cc8f4a2","line":1339,"range":{"start_line":1338,"start_character":0,"end_line":1339,"end_character":62},"in_reply_to":"ca83bb99_bbc8491c","updated":"2026-04-28 08:59:29.000000000","message":"Hi Rajat,\nI have added locks on:\ninitialize_host_info\nget_host_from_host_info\n\nFollowing methods will now not update the Host_connector_info dict when \u003e v8600: \ncreate_host\ndelete_host","commit_id":"c6d2ee4a745807c31a5c30795cc258f8f6374949"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_fc.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"acbc236a79e2c726aaa3aa3e2c1d2c16a8af0eb7","unresolved":true,"context_lines":[{"line_number":207,"context_line":"                                               ))"},{"line_number":208,"context_line":"            else:"},{"line_number":209,"context_line":"                msg \u003d (_(\u0027Host already exists for connector \u0027"},{"line_number":210,"context_line":"                         \u0027%(conn)s\u0027), {\u0027conn\u0027: connector})"},{"line_number":211,"context_line":"                LOG.info(msg)"},{"line_number":212,"context_line":"                host_name \u003d backend_helper.get_host_from_connector(connector)"},{"line_number":213,"context_line":"        except exception.VolumeBackendAPIException as excp:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ad6569c2_689a9ee9","line":210,"updated":"2026-03-18 21:30:20.000000000","message":"Two things:\n1. We don\u0027t translate log messages, so don\u0027t use the _() function here\n2. This is not going to work the way it\u0027s supposed to when you pass it to the logger at line 211 (although, at least it won\u0027t raise an exception).  \u0027msg\u0027 is a tuple, so the logger will just print it:\n\n```\n$ .tox/py313/bin/python\nPython 3.13.9 (main, Nov 16 2025, 16:22:56) [GCC 15.2.1 20251111 (Red Hat 15.2.1-4)] on linux\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\u003e\u003e\u003e from oslo_config import cfg\n\u003e\u003e\u003e from oslo_log import log as logging\n\u003e\u003e\u003e from cinder.i18n import _\n\u003e\u003e\u003e \n\u003e\u003e\u003e LOG \u003d logging.getLogger(__name__)\n\u003e\u003e\u003e CONF \u003d cfg.CONF\n\u003e\u003e\u003e DOMAIN \u003d \u0027demo\u0027\n\u003e\u003e\u003e \n\u003e\u003e\u003e logging.register_options(CONF)\n\u003e\u003e\u003e logging.setup(CONF, DOMAIN)\n\u003e\u003e\u003e \n\u003e\u003e\u003e connector \u003d {\u0027wwpns\u0027: []}\n\u003e\u003e\u003e msg \u003d (_(\u0027Host already exists for connector %(conn)s\u0027), {\u0027conn\u0027: connector}) \n\u003e\u003e\u003e type(msg)\n\u003cclass \u0027tuple\u0027\u003e\n\u003e\u003e\u003e LOG.info(msg)\n2026-03-18 17:06:13.424 378251 INFO __main__ [-] (\u0027Host already exists for connector %(conn)s\u0027, {\u0027conn\u0027: {\u0027wwpns\u0027: []}})\n\u003e\u003e\u003e # ^^^ note that the string interpolation did not happen\n\u003e\u003e\u003e \n\u003e\u003e\u003e mmm \u003d \u0027Host already exists for connector %(conn)s\u0027\n\u003e\u003e\u003e LOG.info(mmm, {\u0027conn\u0027: connector})\n2026-03-18 17:09:31.076 378251 INFO __main__ [-] Host already exists for connector {\u0027wwpns\u0027: []}\n\u003e\u003e\u003e # ^^^ that\u0027s what the message should look like\n\u003e\u003e\u003e \n\u003e\u003e\u003e # or, you could unpack the tuple:\n\u003e\u003e\u003e LOG.info(*msg)\n2026-03-18 17:07:01.737 378251 INFO __main__ [-] Host already exists for connector {\u0027wwpns\u0027: []}\n```\n\nIt looks like this pattern is used all over the place in this file.  For log messages, it\u0027s better to pass the string and interpolation dict separately, because whether the logger will create the message string or not depends on the log level that\u0027s set.  For messages that are doing double duty (like in the \u0027else\u0027 block at lines 220-222, you can use the \u0027%\u0027 operator to interpolate the string (like jayaanand pointed out in the other file) and then pass it to both the logger and in the exception.\n\nYou don\u0027t have to refactor the entire file to address this right now, but it would be good to make sure that the lines you are changing on this patch are written correctly, and you can do the refactoring as a followup.","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"f5c3fc435f4700d8e3ef48507353e4cba96ca3ae","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                                               ))"},{"line_number":208,"context_line":"            else:"},{"line_number":209,"context_line":"                msg \u003d (_(\u0027Host already exists for connector \u0027"},{"line_number":210,"context_line":"                         \u0027%(conn)s\u0027), {\u0027conn\u0027: connector})"},{"line_number":211,"context_line":"                LOG.info(msg)"},{"line_number":212,"context_line":"                host_name \u003d backend_helper.get_host_from_connector(connector)"},{"line_number":213,"context_line":"        except exception.VolumeBackendAPIException as excp:"}],"source_content_type":"text/x-python","patch_set":3,"id":"8a8d141f_97f8bcb2","line":210,"in_reply_to":"ad6569c2_689a9ee9","updated":"2026-03-24 05:36:50.000000000","message":"Done","commit_id":"a24fbc6f69ad1a1035f0913a84da6e8fe8ac41eb"}]}
