)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"45f55b434de5dc3b6ccdd0604e4aac0dcaafc23c","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Fix Infinidat driver multi-attach feature"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added a check if there are multiple attachments to the volume"},{"line_number":10,"context_line":"from the same connector. And terminate connection only for the"},{"line_number":11,"context_line":"last attachment from the corresponding host."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-bug: #1982350"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"28dd3cb9_8277de58","line":10,"range":{"start_line":10,"start_character":23,"end_line":10,"end_character":28},"updated":"2022-09-06 19:54:24.000000000","message":"nit: and","commit_id":"b710f6a32b31d719c78fe1c02c727422a2b9b638"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"d0efa45addc7d1094c6cd7ef179d810d7696bd7a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix Infinidat driver multi-attach feature"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added a check if there are multiple attachments to the volume"},{"line_number":10,"context_line":"from the same connector. And terminate connection only for the"},{"line_number":11,"context_line":"last attachment from the corresponding host."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-bug: #1982350"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"cf7fc407_7e609f1f","line":10,"range":{"start_line":10,"start_character":23,"end_line":10,"end_character":28},"in_reply_to":"28dd3cb9_8277de58","updated":"2022-09-10 00:12:09.000000000","message":"Hello Rajat,\n\nThank you very much for the review!\nI fixed this comment in patchset 6.\n\nThank you!","commit_id":"b710f6a32b31d719c78fe1c02c727422a2b9b638"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"45f55b434de5dc3b6ccdd0604e4aac0dcaafc23c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f51be2dc_eafbe5a4","updated":"2022-09-06 19:54:24.000000000","message":"-1 since there is no assertion in the tests added and also no test is added for method _is_volume_multiattached","commit_id":"b710f6a32b31d719c78fe1c02c727422a2b9b638"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"c42e7c7ae4453d2463b88f4ca79bea2403288957","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a8a92126_a0051462","updated":"2022-08-24 15:36:40.000000000","message":"Patch set #5: rebase and use volume name_id to resolve Infinidat volume name.","commit_id":"b710f6a32b31d719c78fe1c02c727422a2b9b638"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"d0efa45addc7d1094c6cd7ef179d810d7696bd7a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"eb458393_61e49c40","in_reply_to":"f51be2dc_eafbe5a4","updated":"2022-09-10 00:12:09.000000000","message":"Hello Rajat,\n\nThank you very much for the review!\n\nI fixed this comment in patchset 6.\nPlease take a look the cover report:\nhttp://openstack-ci-logs.aws.infinidat.com/logs/refs-changes-21-850321-6/iSCSI/cinder/cover/infinidat.html#t463\n\nThank you!","commit_id":"b710f6a32b31d719c78fe1c02c727422a2b9b638"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"c8ca093a2567e7e1c9e7504f6b1d8adb26ac2750","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d6d4afc9_834d0900","updated":"2022-11-23 13:58:13.000000000","message":"Looks good and passing Infinidat CI","commit_id":"6b97f5fe57232f2b82ac88a8ec462330043cdd43"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"de5a90dd68f3483f41b12d53f8e2bd4b744b5299","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"408dbb4c_e7947954","updated":"2022-12-08 15:02:18.000000000","message":"Looks good","commit_id":"d8ca81e7c911add4f99f888d7315130ac3b60e22"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"74319dd0f9711fef2decec65d143320aa2d48e21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"9641428c_eaac414c","updated":"2022-12-01 17:02:00.000000000","message":"Tests cover code changes and CI is passing, looks good to me.\n","commit_id":"d8ca81e7c911add4f99f888d7315130ac3b60e22"},{"author":{"_account_id":34148,"name":"Aboubacar Diare","display_name":"abdi","email":"diare@hpe.com","username":"abdi"},"change_message_id":"b629cff0dfbe62d6d0cdc5bd53ac6341e85e6f78","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"0c9d6abb_8bce4a33","updated":"2022-12-09 05:17:07.000000000","message":"run-HPE XP Storage CI","commit_id":"d8ca81e7c911add4f99f888d7315130ac3b60e22"},{"author":{"_account_id":34148,"name":"Aboubacar Diare","display_name":"abdi","email":"diare@hpe.com","username":"abdi"},"change_message_id":"1a5a60e317da472d91d2286e1c898f4376441c21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3e0d3bd8_82c352a9","updated":"2022-12-09 03:02:59.000000000","message":"run-HPE XP Storage CI","commit_id":"d8ca81e7c911add4f99f888d7315130ac3b60e22"}],"cinder/tests/unit/volume/drivers/test_infinidat.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"45f55b434de5dc3b6ccdd0604e4aac0dcaafc23c","unresolved":true,"context_lines":[{"line_number":912,"context_line":"    def test_terminate_connection_multiattached_volume(self):"},{"line_number":913,"context_line":"        test_volume.multiattach \u003d True"},{"line_number":914,"context_line":"        test_volume.volume_attachment \u003d [test_attachment2, test_attachment2]"},{"line_number":915,"context_line":"        self.driver.terminate_connection(test_volume, test_connector2)"},{"line_number":916,"context_line":""},{"line_number":917,"context_line":""},{"line_number":918,"context_line":"class InfiniboxDriverTestCaseQoS(InfiniboxDriverTestCaseBase):"}],"source_content_type":"text/x-python","patch_set":5,"id":"a363ccb0_aa95f37d","line":915,"range":{"start_line":915,"start_character":8,"end_line":915,"end_character":70},"updated":"2022-09-06 19:54:24.000000000","message":"we should at least assert that the return value here is True","commit_id":"b710f6a32b31d719c78fe1c02c727422a2b9b638"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"d0efa45addc7d1094c6cd7ef179d810d7696bd7a","unresolved":false,"context_lines":[{"line_number":912,"context_line":"    def test_terminate_connection_multiattached_volume(self):"},{"line_number":913,"context_line":"        test_volume.multiattach \u003d True"},{"line_number":914,"context_line":"        test_volume.volume_attachment \u003d [test_attachment2, test_attachment2]"},{"line_number":915,"context_line":"        self.driver.terminate_connection(test_volume, test_connector2)"},{"line_number":916,"context_line":""},{"line_number":917,"context_line":""},{"line_number":918,"context_line":"class InfiniboxDriverTestCaseQoS(InfiniboxDriverTestCaseBase):"}],"source_content_type":"text/x-python","patch_set":5,"id":"655ef2b9_0edc6208","line":915,"range":{"start_line":915,"start_character":8,"end_line":915,"end_character":70},"in_reply_to":"a363ccb0_aa95f37d","updated":"2022-09-10 00:12:09.000000000","message":"Hello Rajat,\n\nThank you very much for the review!\nI fixed this comment in patchset 6.\n\nThank you!","commit_id":"b710f6a32b31d719c78fe1c02c727422a2b9b638"}],"cinder/volume/drivers/infinidat.py":[{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"111258e8e4b674322bdbeee9d542ccc903dd5c52","unresolved":true,"context_lines":[{"line_number":494,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":495,"context_line":"        \"\"\"Unmap an InfiniBox volume from the host\"\"\""},{"line_number":496,"context_line":"        if self._is_volume_multiattached(volume, connector):"},{"line_number":497,"context_line":"            return True"},{"line_number":498,"context_line":"        infinidat_volume \u003d self._get_infinidat_volume(volume)"},{"line_number":499,"context_line":"        if self._protocol \u003d\u003d constants.FC:"},{"line_number":500,"context_line":"            volume_type \u003d \u0027fibre_channel\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"6925debc_903383b5","line":497,"updated":"2022-07-22 14:24:59.000000000","message":"This seems mis-aligned with the abstract base class definition of this method - it has no return value as far as I can tell.\n\njust:\n\n   return \n   \nmight be sufficient?","commit_id":"c4c22fbc04fc1da2d5b684aae2e1e7c6a7ba32f4"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"bfb5234b0febcf4a5a7aa170d9266ddc13a24631","unresolved":true,"context_lines":[{"line_number":494,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":495,"context_line":"        \"\"\"Unmap an InfiniBox volume from the host\"\"\""},{"line_number":496,"context_line":"        if self._is_volume_multiattached(volume, connector):"},{"line_number":497,"context_line":"            return True"},{"line_number":498,"context_line":"        infinidat_volume \u003d self._get_infinidat_volume(volume)"},{"line_number":499,"context_line":"        if self._protocol \u003d\u003d constants.FC:"},{"line_number":500,"context_line":"            volume_type \u003d \u0027fibre_channel\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"a070c50f_fc075a3a","line":497,"in_reply_to":"6925debc_903383b5","updated":"2022-07-25 07:54:01.000000000","message":"Hello James,\n\nThank you very much for the review!\n\nThe terminate_connection method has some special and undocumented behaviour, especially for the multi-attach case - please take a look at the Cinder manager source code:\n\nhttps://opendev.org/openstack/cinder/src/branch/master/cinder/volume/manager.py#L4918\n\nAnd for example, the same code you can see for LVM driver:\n\nhttps://opendev.org/openstack/cinder/src/branch/master/cinder/volume/drivers/lvm.py#L865\n\nI think we must return True in case of multi-attached volume.\n\nThank you!","commit_id":"c4c22fbc04fc1da2d5b684aae2e1e7c6a7ba32f4"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"bc79dce88b6b770208378c4339a0663b9ebcbedc","unresolved":false,"context_lines":[{"line_number":494,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":495,"context_line":"        \"\"\"Unmap an InfiniBox volume from the host\"\"\""},{"line_number":496,"context_line":"        if self._is_volume_multiattached(volume, connector):"},{"line_number":497,"context_line":"            return True"},{"line_number":498,"context_line":"        infinidat_volume \u003d self._get_infinidat_volume(volume)"},{"line_number":499,"context_line":"        if self._protocol \u003d\u003d constants.FC:"},{"line_number":500,"context_line":"            volume_type \u003d \u0027fibre_channel\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"8051e00d_9ee6a8bb","line":497,"in_reply_to":"a070c50f_fc075a3a","updated":"2022-07-31 13:49:59.000000000","message":"Done","commit_id":"c4c22fbc04fc1da2d5b684aae2e1e7c6a7ba32f4"},{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"111258e8e4b674322bdbeee9d542ccc903dd5c52","unresolved":true,"context_lines":[{"line_number":529,"context_line":"                         data\u003dresult_data)"},{"line_number":530,"context_line":"        if self._protocol \u003d\u003d constants.FC:"},{"line_number":531,"context_line":"            fczm_utils.remove_fc_zone(conn_info)"},{"line_number":532,"context_line":"        return conn_info"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    @infinisdk_to_cinder_exceptions"},{"line_number":535,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"091fcf5a_188cbaf6","line":532,"updated":"2022-07-22 14:24:59.000000000","message":"See comment above about ABC signature of this method not having a return value.","commit_id":"c4c22fbc04fc1da2d5b684aae2e1e7c6a7ba32f4"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"89a459ff2b47c856572547fc00f535806e0a7e9d","unresolved":true,"context_lines":[{"line_number":529,"context_line":"                         data\u003dresult_data)"},{"line_number":530,"context_line":"        if self._protocol \u003d\u003d constants.FC:"},{"line_number":531,"context_line":"            fczm_utils.remove_fc_zone(conn_info)"},{"line_number":532,"context_line":"        return conn_info"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    @infinisdk_to_cinder_exceptions"},{"line_number":535,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f58c587_a5902f5a","line":532,"in_reply_to":"091fcf5a_188cbaf6","updated":"2022-07-25 08:05:02.000000000","message":"Hello James,\n\nThank you very much for the review!\n\nYes, I agree with you, but all other drivers return the same value for the terminate_connection method. For example:\n\nhttps://opendev.org/openstack/cinder/src/branch/master/cinder/volume/drivers/dell_emc/xtremio.py#L1340\nhttps://opendev.org/openstack/cinder/src/branch/master/cinder/volume/drivers/macrosan/driver.py#L1524\nhttps://opendev.org/openstack/cinder/src/branch/master/cinder/volume/drivers/pure.py#L2926\nhttps://opendev.org/openstack/cinder/src/branch/master/cinder/volume/drivers/ibm/storwize_svc/storwize_svc_fc.py#L357\nhttps://opendev.org/openstack/cinder/src/branch/master/cinder/volume/drivers/huawei/huawei_driver.py#L533\nhttps://opendev.org/openstack/cinder/src/branch/master/cinder/volume/drivers/datacore/fc.py#L195\nhttps://opendev.org/openstack/cinder/src/branch/master/cinder/volume/drivers/hpe/nimble.py#L1253\nhttps://opendev.org/openstack/cinder/src/branch/master/cinder/volume/drivers/ibm/ibm_storage/ibm_storage.py#L164\n\nThank you!","commit_id":"c4c22fbc04fc1da2d5b684aae2e1e7c6a7ba32f4"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"bc79dce88b6b770208378c4339a0663b9ebcbedc","unresolved":false,"context_lines":[{"line_number":529,"context_line":"                         data\u003dresult_data)"},{"line_number":530,"context_line":"        if self._protocol \u003d\u003d constants.FC:"},{"line_number":531,"context_line":"            fczm_utils.remove_fc_zone(conn_info)"},{"line_number":532,"context_line":"        return conn_info"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    @infinisdk_to_cinder_exceptions"},{"line_number":535,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"a17cc5fa_9fae11ae","line":532,"in_reply_to":"9f58c587_a5902f5a","updated":"2022-07-31 13:49:59.000000000","message":"Done","commit_id":"c4c22fbc04fc1da2d5b684aae2e1e7c6a7ba32f4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"45f55b434de5dc3b6ccdd0604e4aac0dcaafc23c","unresolved":true,"context_lines":[{"line_number":456,"context_line":"        else:"},{"line_number":457,"context_line":"            ports \u003d [iqn.IQN(connector[\u0027initiator\u0027])]"},{"line_number":458,"context_line":"        return ports"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def _is_volume_multiattached(self, volume, connector):"},{"line_number":461,"context_line":"        \"\"\"Returns whether the volume is multiattached."},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        Check if there are multiple attachments to the volume"},{"line_number":464,"context_line":"        from the same connector. Terminate connection only for"},{"line_number":465,"context_line":"        the last attachment from the corresponding host."},{"line_number":466,"context_line":"        \"\"\""},{"line_number":467,"context_line":"        if not (connector and volume.multiattach and"},{"line_number":468,"context_line":"                volume.volume_attachment):"},{"line_number":469,"context_line":"            return False"},{"line_number":470,"context_line":"        attributes \u003d [\u0027system uuid\u0027]"},{"line_number":471,"context_line":"        if self._protocol \u003d\u003d constants.FC:"},{"line_number":472,"context_line":"            attributes.append(\u0027wwpns\u0027)"},{"line_number":473,"context_line":"        else:"},{"line_number":474,"context_line":"            attributes.append(\u0027initiator\u0027)"},{"line_number":475,"context_line":"        found \u003d {attribute: [] for attribute in attributes}"},{"line_number":476,"context_line":"        for attachment in volume.volume_attachment:"},{"line_number":477,"context_line":"            if not attachment.connector:"},{"line_number":478,"context_line":"                continue"},{"line_number":479,"context_line":"            for attribute in attributes:"},{"line_number":480,"context_line":"                value \u003d attachment.connector.get(attribute)"},{"line_number":481,"context_line":"                if not value:"},{"line_number":482,"context_line":"                    continue"},{"line_number":483,"context_line":"                values \u003d found.get(attribute)"},{"line_number":484,"context_line":"                if value in values and value \u003d\u003d connector.get(attribute):"},{"line_number":485,"context_line":"                    LOG.debug(\u0027volume %s is multiattached to %s %s\u0027,"},{"line_number":486,"context_line":"                              volume.name_id, attribute, value)"},{"line_number":487,"context_line":"                    return True"},{"line_number":488,"context_line":"                values.append(value)"},{"line_number":489,"context_line":"        return False"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"    @infinisdk_to_cinder_exceptions"},{"line_number":492,"context_line":"    @coordination.synchronized(\u0027infinidat-{self.management_address}-lock\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"2c54d4cd_0a91d508","line":489,"range":{"start_line":459,"start_character":0,"end_line":489,"end_character":20},"updated":"2022-09-06 19:54:24.000000000","message":"a compact logic for the same is in lvm driver\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/lvm.py#L862-L865","commit_id":"b710f6a32b31d719c78fe1c02c727422a2b9b638"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"d0efa45addc7d1094c6cd7ef179d810d7696bd7a","unresolved":false,"context_lines":[{"line_number":456,"context_line":"        else:"},{"line_number":457,"context_line":"            ports \u003d [iqn.IQN(connector[\u0027initiator\u0027])]"},{"line_number":458,"context_line":"        return ports"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def _is_volume_multiattached(self, volume, connector):"},{"line_number":461,"context_line":"        \"\"\"Returns whether the volume is multiattached."},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        Check if there are multiple attachments to the volume"},{"line_number":464,"context_line":"        from the same connector. Terminate connection only for"},{"line_number":465,"context_line":"        the last attachment from the corresponding host."},{"line_number":466,"context_line":"        \"\"\""},{"line_number":467,"context_line":"        if not (connector and volume.multiattach and"},{"line_number":468,"context_line":"                volume.volume_attachment):"},{"line_number":469,"context_line":"            return False"},{"line_number":470,"context_line":"        attributes \u003d [\u0027system uuid\u0027]"},{"line_number":471,"context_line":"        if self._protocol \u003d\u003d constants.FC:"},{"line_number":472,"context_line":"            attributes.append(\u0027wwpns\u0027)"},{"line_number":473,"context_line":"        else:"},{"line_number":474,"context_line":"            attributes.append(\u0027initiator\u0027)"},{"line_number":475,"context_line":"        found \u003d {attribute: [] for attribute in attributes}"},{"line_number":476,"context_line":"        for attachment in volume.volume_attachment:"},{"line_number":477,"context_line":"            if not attachment.connector:"},{"line_number":478,"context_line":"                continue"},{"line_number":479,"context_line":"            for attribute in attributes:"},{"line_number":480,"context_line":"                value \u003d attachment.connector.get(attribute)"},{"line_number":481,"context_line":"                if not value:"},{"line_number":482,"context_line":"                    continue"},{"line_number":483,"context_line":"                values \u003d found.get(attribute)"},{"line_number":484,"context_line":"                if value in values and value \u003d\u003d connector.get(attribute):"},{"line_number":485,"context_line":"                    LOG.debug(\u0027volume %s is multiattached to %s %s\u0027,"},{"line_number":486,"context_line":"                              volume.name_id, attribute, value)"},{"line_number":487,"context_line":"                    return True"},{"line_number":488,"context_line":"                values.append(value)"},{"line_number":489,"context_line":"        return False"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"    @infinisdk_to_cinder_exceptions"},{"line_number":492,"context_line":"    @coordination.synchronized(\u0027infinidat-{self.management_address}-lock\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"238f3561_e9bee380","line":489,"range":{"start_line":459,"start_character":0,"end_line":489,"end_character":20},"in_reply_to":"2c54d4cd_0a91d508","updated":"2022-09-10 00:12:09.000000000","message":"Hello Rajat,\n\nThank you very much for the review and provided reference!\nI fixed this comment in patchset 6.\n\nThank you!","commit_id":"b710f6a32b31d719c78fe1c02c727422a2b9b638"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"45f55b434de5dc3b6ccdd0604e4aac0dcaafc23c","unresolved":true,"context_lines":[{"line_number":537,"context_line":"                         data\u003dresult_data)"},{"line_number":538,"context_line":"        if self._protocol \u003d\u003d constants.FC:"},{"line_number":539,"context_line":"            fczm_utils.remove_fc_zone(conn_info)"},{"line_number":540,"context_line":"        return conn_info"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"    @infinisdk_to_cinder_exceptions"},{"line_number":543,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":5,"id":"e52d335a_3155087b","line":540,"range":{"start_line":540,"start_character":15,"end_line":540,"end_character":24},"updated":"2022-09-06 19:54:24.000000000","message":"this doesn\u0027t look right, we expect a boolean value here\n\nhttps://github.com/openstack/cinder/blob/f97f7ff514971701a8cd606f65ae5b9f06204a50/cinder/volume/manager.py#L4971-L4975","commit_id":"b710f6a32b31d719c78fe1c02c727422a2b9b638"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"d0efa45addc7d1094c6cd7ef179d810d7696bd7a","unresolved":false,"context_lines":[{"line_number":537,"context_line":"                         data\u003dresult_data)"},{"line_number":538,"context_line":"        if self._protocol \u003d\u003d constants.FC:"},{"line_number":539,"context_line":"            fczm_utils.remove_fc_zone(conn_info)"},{"line_number":540,"context_line":"        return conn_info"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"    @infinisdk_to_cinder_exceptions"},{"line_number":543,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff9add0c_19745ef7","line":540,"range":{"start_line":540,"start_character":15,"end_line":540,"end_character":24},"in_reply_to":"e52d335a_3155087b","updated":"2022-09-10 00:12:09.000000000","message":"Hello Rajat,\n\nThank you very much for the review!\nI fixed this comment in patchset 6.\n\nThank you!","commit_id":"b710f6a32b31d719c78fe1c02c727422a2b9b638"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"de5a90dd68f3483f41b12d53f8e2bd4b744b5299","unresolved":true,"context_lines":[{"line_number":483,"context_line":"        \"\"\"Returns whether the volume is multiattached."},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        Check if there are multiple attachments to the volume"},{"line_number":486,"context_line":"        from the same connector. Terminate connection only for"},{"line_number":487,"context_line":"        the last attachment from the corresponding host."},{"line_number":488,"context_line":"        \"\"\""},{"line_number":489,"context_line":"        if not (connector and volume.multiattach and"},{"line_number":490,"context_line":"                volume.volume_attachment):"}],"source_content_type":"text/x-python","patch_set":8,"id":"a7871af5_4aee4417","line":487,"range":{"start_line":486,"start_character":33,"end_line":487,"end_character":56},"updated":"2022-12-08 15:02:18.000000000","message":":nit: Sorry if this is too obvious but I\u0027m not sure what this last part means. \n\n\u0027in case you would like to detach the volume, you should first terminate connection only for the last attachment..\u0027?","commit_id":"d8ca81e7c911add4f99f888d7315130ac3b60e22"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"06bc48d01b35e39399313c9f9ae18fea1dd556a4","unresolved":true,"context_lines":[{"line_number":483,"context_line":"        \"\"\"Returns whether the volume is multiattached."},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        Check if there are multiple attachments to the volume"},{"line_number":486,"context_line":"        from the same connector. Terminate connection only for"},{"line_number":487,"context_line":"        the last attachment from the corresponding host."},{"line_number":488,"context_line":"        \"\"\""},{"line_number":489,"context_line":"        if not (connector and volume.multiattach and"},{"line_number":490,"context_line":"                volume.volume_attachment):"}],"source_content_type":"text/x-python","patch_set":8,"id":"b930333f_2f218653","line":487,"range":{"start_line":486,"start_character":33,"end_line":487,"end_character":56},"in_reply_to":"a7871af5_4aee4417","updated":"2022-12-16 21:54:12.000000000","message":"The bug that this is fixing is that when multiple instances on the same host are using the volume, you have to terminate the connection only when the last attachment is removed.","commit_id":"d8ca81e7c911add4f99f888d7315130ac3b60e22"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"de5a90dd68f3483f41b12d53f8e2bd4b744b5299","unresolved":false,"context_lines":[{"line_number":494,"context_line":"            keys.append(\u0027wwpns\u0027)"},{"line_number":495,"context_line":"        else:"},{"line_number":496,"context_line":"            keys.append(\u0027initiator\u0027)"},{"line_number":497,"context_line":"        for key in keys:"},{"line_number":498,"context_line":"            if not (key in connector and connector[key]):"},{"line_number":499,"context_line":"                continue"},{"line_number":500,"context_line":"            if sum(1 for attachment in volume.volume_attachment if"},{"line_number":501,"context_line":"                   attachment.connector and key in attachment.connector and"},{"line_number":502,"context_line":"                   attachment.connector[key] \u003d\u003d connector[key]) \u003e 1:"},{"line_number":503,"context_line":"                LOG.debug(\u0027Volume %s is multiattached to %s %s\u0027,"},{"line_number":504,"context_line":"                          volume.name_id, key, connector[key])"},{"line_number":505,"context_line":"                return True"},{"line_number":506,"context_line":"        return False"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    @infinisdk_to_cinder_exceptions"}],"source_content_type":"text/x-python","patch_set":8,"id":"143471c2_e9e14e4e","line":505,"range":{"start_line":497,"start_character":8,"end_line":505,"end_character":27},"updated":"2022-12-08 15:02:18.000000000","message":"I\u0027m not sure that this helps the expressiveness or the transparency of the operation, but I think these lines can be summarized. It would be a question for the future, but if not, that\u0027s fine.\n\n```\nsimultaneous_connections \u003d sum(sum(1 for attachment in volume.volume_attachment if attachment.connector and key in attachment.connector and attachment.connector[key] \u003d\u003d connector[key]) for key in keys)\n\nif simultaneous_connections:\n[..]\n\n```","commit_id":"d8ca81e7c911add4f99f888d7315130ac3b60e22"}],"releasenotes/notes/bug-1982350-infinidat-fix-multi-attach-19f62d182b675e59.yaml":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"45f55b434de5dc3b6ccdd0604e4aac0dcaafc23c","unresolved":true,"context_lines":[{"line_number":5,"context_line":"    \u003chttps://bugs.launchpad.net/cinder/+bug/1982350\u003e`_:"},{"line_number":6,"context_line":"    Fixed Infinidat driver multi-attach feature."},{"line_number":7,"context_line":"    Added a check if there are multiple attachments to the volume"},{"line_number":8,"context_line":"    from the same connector. And terminate connection only for the"},{"line_number":9,"context_line":"    last attachment from the corresponding host."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"34d39e9d_76c0f5d5","line":8,"range":{"start_line":8,"start_character":27,"end_line":8,"end_character":32},"updated":"2022-09-06 19:54:24.000000000","message":"nit: remove the full stop\n\n.. same connector and terminate ...","commit_id":"b710f6a32b31d719c78fe1c02c727422a2b9b638"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"d0efa45addc7d1094c6cd7ef179d810d7696bd7a","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    \u003chttps://bugs.launchpad.net/cinder/+bug/1982350\u003e`_:"},{"line_number":6,"context_line":"    Fixed Infinidat driver multi-attach feature."},{"line_number":7,"context_line":"    Added a check if there are multiple attachments to the volume"},{"line_number":8,"context_line":"    from the same connector. And terminate connection only for the"},{"line_number":9,"context_line":"    last attachment from the corresponding host."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"ee68da32_5854cee0","line":8,"range":{"start_line":8,"start_character":27,"end_line":8,"end_character":32},"in_reply_to":"34d39e9d_76c0f5d5","updated":"2022-09-10 00:12:09.000000000","message":"Hello Rajat,\n\nThank you very much for the review!\nI fixed this comment in patchset 6.\n\nThank you!","commit_id":"b710f6a32b31d719c78fe1c02c727422a2b9b638"}]}
