)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"86ec2fee9d33bd43a6265a96a16ccc8a6f4018e5","unresolved":true,"context_lines":[{"line_number":21,"context_line":"  terminate-connection on Cinder."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- Not flushing the multipath device (possible data loss) and leaving it"},{"line_number":24,"context_line":"  as a lefover device similarly to the other case."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"This patch changes how we do disconnects, now we assume we are always"},{"line_number":27,"context_line":"disconnecting multipaths, and fallback to doing the single path"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"e876db22_928575a9","line":24,"range":{"start_line":24,"start_character":7,"end_line":24,"end_character":14},"updated":"2021-03-26 09:38:02.000000000","message":"leftover","commit_id":"0c62100817a29db962cec04b237740fbe27663bc"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"30fa3f2e4dbeef484e8a1bd5bcb7dceba33c3ce2","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  terminate-connection on Cinder."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- Not flushing the multipath device (possible data loss) and leaving it"},{"line_number":24,"context_line":"  as a lefover device similarly to the other case."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"This patch changes how we do disconnects, now we assume we are always"},{"line_number":27,"context_line":"disconnecting multipaths, and fallback to doing the single path"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"db7f0bd4_129a2326","line":24,"range":{"start_line":24,"start_character":7,"end_line":24,"end_character":14},"in_reply_to":"e876db22_928575a9","updated":"2021-03-26 09:55:53.000000000","message":"Done","commit_id":"0c62100817a29db962cec04b237740fbe27663bc"}],"os_brick/initiator/connectors/base_iscsi.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"86ec2fee9d33bd43a6265a96a16ccc8a6f4018e5","unresolved":true,"context_lines":[{"line_number":33,"context_line":"    def _get_luns(con_props, iqns\u003dNone):"},{"line_number":34,"context_line":"        luns \u003d con_props.get(\u0027target_luns\u0027)"},{"line_number":35,"context_line":"        num_luns \u003d len(con_props[\u0027target_iqns\u0027]) if iqns is None else len(iqns)"},{"line_number":36,"context_line":"        return luns or [con_props.get(\u0027target_lun\u0027)] * num_luns"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _get_all_targets(self, connection_properties):"},{"line_number":39,"context_line":"        if all(key in connection_properties for key in (\u0027target_portals\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fda72bef_6d8aada1","line":36,"range":{"start_line":36,"start_character":24,"end_line":36,"end_character":51},"updated":"2021-03-26 09:38:02.000000000","message":"This is unrelated to the patch since this method is just moved.\n\ntarget_lun should always exist right? IMO we should use con_props[\u0027target_lun\u0027] for better clarity.\nif in any case this returns None then we\u0027re going to get exception \"Unsupported operand types\" so is there a possibility of a default value (like done on L#47 for single path)","commit_id":"0c62100817a29db962cec04b237740fbe27663bc"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"30fa3f2e4dbeef484e8a1bd5bcb7dceba33c3ce2","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def _get_luns(con_props, iqns\u003dNone):"},{"line_number":34,"context_line":"        luns \u003d con_props.get(\u0027target_luns\u0027)"},{"line_number":35,"context_line":"        num_luns \u003d len(con_props[\u0027target_iqns\u0027]) if iqns is None else len(iqns)"},{"line_number":36,"context_line":"        return luns or [con_props.get(\u0027target_lun\u0027)] * num_luns"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _get_all_targets(self, connection_properties):"},{"line_number":39,"context_line":"        if all(key in connection_properties for key in (\u0027target_portals\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"cbc4d8a8_d4ffd77d","line":36,"range":{"start_line":36,"start_character":24,"end_line":36,"end_character":51},"in_reply_to":"fda72bef_6d8aada1","updated":"2021-03-26 09:55:53.000000000","message":"Done","commit_id":"0c62100817a29db962cec04b237740fbe27663bc"}],"os_brick/initiator/connectors/iscsi.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"86ec2fee9d33bd43a6265a96a16ccc8a6f4018e5","unresolved":true,"context_lines":[{"line_number":197,"context_line":"                          else self._get_discoverydb_portals)"},{"line_number":198,"context_line":"                ips_iqns_luns \u003d method(connection_properties)"},{"line_number":199,"context_line":"        except exception.TargetPortalNotFound:"},{"line_number":200,"context_line":"            # Discovery failed, if we are disconnecting this will happen if we"},{"line_number":201,"context_line":"            # are disconnecting a single pathed connection, so we use the"},{"line_number":202,"context_line":"            # connection properties to return the tuple."},{"line_number":203,"context_line":"            if is_disconnect_call:"}],"source_content_type":"text/x-python","patch_set":1,"id":"d6902b40_391ff303","line":200,"range":{"start_line":200,"start_character":32,"end_line":200,"end_character":56},"updated":"2021-03-26 09:38:02.000000000","message":"nit: we can remove this","commit_id":"0c62100817a29db962cec04b237740fbe27663bc"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"30fa3f2e4dbeef484e8a1bd5bcb7dceba33c3ce2","unresolved":false,"context_lines":[{"line_number":197,"context_line":"                          else self._get_discoverydb_portals)"},{"line_number":198,"context_line":"                ips_iqns_luns \u003d method(connection_properties)"},{"line_number":199,"context_line":"        except exception.TargetPortalNotFound:"},{"line_number":200,"context_line":"            # Discovery failed, if we are disconnecting this will happen if we"},{"line_number":201,"context_line":"            # are disconnecting a single pathed connection, so we use the"},{"line_number":202,"context_line":"            # connection properties to return the tuple."},{"line_number":203,"context_line":"            if is_disconnect_call:"}],"source_content_type":"text/x-python","patch_set":1,"id":"8e2a4d09_da121378","line":200,"range":{"start_line":200,"start_character":32,"end_line":200,"end_character":56},"in_reply_to":"d6902b40_391ff303","updated":"2021-03-26 09:55:53.000000000","message":"Done","commit_id":"0c62100817a29db962cec04b237740fbe27663bc"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"1fe217d0d28d2ecabcc5a8cee5a11075fe1c726c","unresolved":true,"context_lines":[{"line_number":902,"context_line":"                              ignore errors or raise an exception once finished"},{"line_number":903,"context_line":"                              the operation.  Default is False."},{"line_number":904,"context_line":"        :param device_info: Attached device information."},{"line_number":905,"context_line":"        :type ignore_errors: bool"},{"line_number":906,"context_line":"        \"\"\""},{"line_number":907,"context_line":"        exc \u003d exception.ExceptionChainer()"},{"line_number":908,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"a6ec2705_c969d6d7","line":905,"updated":"2021-03-25 21:01:09.000000000","message":"I think the purpose and type of is_disconnect_call is pretty clear from the parameter definition (and this is a private method that doesn\u0027t show up in the docs anyway).  If anyone feels strongly in the opposite direction, we can update the docstrings in a followup patch.","commit_id":"0c62100817a29db962cec04b237740fbe27663bc"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"0efaa85eaee7a801dfb6f958874c792a27f07a1b","unresolved":false,"context_lines":[{"line_number":902,"context_line":"                              ignore errors or raise an exception once finished"},{"line_number":903,"context_line":"                              the operation.  Default is False."},{"line_number":904,"context_line":"        :param device_info: Attached device information."},{"line_number":905,"context_line":"        :type ignore_errors: bool"},{"line_number":906,"context_line":"        \"\"\""},{"line_number":907,"context_line":"        exc \u003d exception.ExceptionChainer()"},{"line_number":908,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"55633a94_d8fa2ed0","line":905,"in_reply_to":"a6ec2705_c969d6d7","updated":"2021-03-26 09:32:21.000000000","message":"Follow up patch with docstring changes: https://review.opendev.org/c/openstack/os-brick/+/783230","commit_id":"0c62100817a29db962cec04b237740fbe27663bc"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"86ec2fee9d33bd43a6265a96a16ccc8a6f4018e5","unresolved":true,"context_lines":[{"line_number":902,"context_line":"                              ignore errors or raise an exception once finished"},{"line_number":903,"context_line":"                              the operation.  Default is False."},{"line_number":904,"context_line":"        :param device_info: Attached device information."},{"line_number":905,"context_line":"        :type ignore_errors: bool"},{"line_number":906,"context_line":"        \"\"\""},{"line_number":907,"context_line":"        exc \u003d exception.ExceptionChainer()"},{"line_number":908,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ebce9e0a_cce2394b","line":905,"in_reply_to":"a6ec2705_c969d6d7","updated":"2021-03-26 09:38:02.000000000","message":"It looks self explanatory and the use is described on L#200 but I won\u0027t mind a docstring that will save time looking up the calls which are passing this.","commit_id":"0c62100817a29db962cec04b237740fbe27663bc"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"30fa3f2e4dbeef484e8a1bd5bcb7dceba33c3ce2","unresolved":false,"context_lines":[{"line_number":902,"context_line":"                              ignore errors or raise an exception once finished"},{"line_number":903,"context_line":"                              the operation.  Default is False."},{"line_number":904,"context_line":"        :param device_info: Attached device information."},{"line_number":905,"context_line":"        :type ignore_errors: bool"},{"line_number":906,"context_line":"        \"\"\""},{"line_number":907,"context_line":"        exc \u003d exception.ExceptionChainer()"},{"line_number":908,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"233fdea6_ba10900a","line":905,"in_reply_to":"ebce9e0a_cce2394b","updated":"2021-03-26 09:55:53.000000000","message":"Since I\u0027m doing other changes I have squashed that change into this one.","commit_id":"0c62100817a29db962cec04b237740fbe27663bc"}],"os_brick/tests/initiator/test_linuxscsi.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"86ec2fee9d33bd43a6265a96a16ccc8a6f4018e5","unresolved":true,"context_lines":[{"line_number":313,"context_line":"    def test_remove_connection_singlepath_used(self, remove_mock, wait_mock,"},{"line_number":314,"context_line":"                                               remove_link_mock, find_dm_mock):"},{"line_number":315,"context_line":"        # Test remove connection when we didn\u0027t form a multipath and just used"},{"line_number":316,"context_line":"        # one of the single pathsthat were found.  This means that we don\u0027t"},{"line_number":317,"context_line":"        # flush any of the single paths when removing them."},{"line_number":318,"context_line":"        find_dm_mock.return_value \u003d None"},{"line_number":319,"context_line":"        devices_names \u003d (\u0027sda\u0027, \u0027sdb\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"69bb9c20_a551f0d4","line":316,"range":{"start_line":316,"start_character":28,"end_line":316,"end_character":37},"updated":"2021-03-26 09:38:02.000000000","message":"nit: space between paths and that","commit_id":"0c62100817a29db962cec04b237740fbe27663bc"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"30fa3f2e4dbeef484e8a1bd5bcb7dceba33c3ce2","unresolved":false,"context_lines":[{"line_number":313,"context_line":"    def test_remove_connection_singlepath_used(self, remove_mock, wait_mock,"},{"line_number":314,"context_line":"                                               remove_link_mock, find_dm_mock):"},{"line_number":315,"context_line":"        # Test remove connection when we didn\u0027t form a multipath and just used"},{"line_number":316,"context_line":"        # one of the single pathsthat were found.  This means that we don\u0027t"},{"line_number":317,"context_line":"        # flush any of the single paths when removing them."},{"line_number":318,"context_line":"        find_dm_mock.return_value \u003d None"},{"line_number":319,"context_line":"        devices_names \u003d (\u0027sda\u0027, \u0027sdb\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c90e01a8_aa07aef9","line":316,"range":{"start_line":316,"start_character":28,"end_line":316,"end_character":37},"in_reply_to":"69bb9c20_a551f0d4","updated":"2021-03-26 09:55:53.000000000","message":"Done","commit_id":"0c62100817a29db962cec04b237740fbe27663bc"}]}
