)]}'
{"cinder/tests/unit/volume/drivers/dell_emc/sc/test_fc.py":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"3eeae2590e1d87d85def1d892182dc129aed6f4f","unresolved":false,"context_lines":[{"line_number":963,"context_line":"    @mock.patch.object(storagecenter_api.SCApi,"},{"line_number":964,"context_line":"                       \u0027get_volume_count\u0027,"},{"line_number":965,"context_line":"                       return_value\u003d1)"},{"line_number":966,"context_line":"    def test_terminate_connection_multiattached_host(self,"},{"line_number":967,"context_line":"                                                     mock_get_volume_count,"},{"line_number":968,"context_line":"                                                     mock_find_wwns,"},{"line_number":969,"context_line":"                                                     mock_unmap_volume,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_2bb9dc77","line":966,"range":{"start_line":966,"start_character":0,"end_line":966,"end_character":58},"updated":"2019-06-27 23:07:57.000000000","message":"maybe extra line before it for readability.","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"0d4b1ee10d023136094c783ff2be312c42a75f9a","unresolved":false,"context_lines":[{"line_number":963,"context_line":"    @mock.patch.object(storagecenter_api.SCApi,"},{"line_number":964,"context_line":"                       \u0027get_volume_count\u0027,"},{"line_number":965,"context_line":"                       return_value\u003d1)"},{"line_number":966,"context_line":"    def test_terminate_connection_multiattached_host(self,"},{"line_number":967,"context_line":"                                                     mock_get_volume_count,"},{"line_number":968,"context_line":"                                                     mock_find_wwns,"},{"line_number":969,"context_line":"                                                     mock_unmap_volume,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_7ee4703c","line":966,"range":{"start_line":966,"start_character":0,"end_line":966,"end_character":58},"in_reply_to":"9fb8cfa7_2bb9dc77","updated":"2019-06-28 02:53:57.000000000","message":"The line above is a mock\u0027s for the testcase and it won\u0027t work if I add the line","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"3eeae2590e1d87d85def1d892182dc129aed6f4f","unresolved":false,"context_lines":[{"line_number":1013,"context_line":"    @mock.patch.object(storagecenter_api.SCApi,"},{"line_number":1014,"context_line":"                       \u0027get_volume_count\u0027,"},{"line_number":1015,"context_line":"                       return_value\u003d1)"},{"line_number":1016,"context_line":"    def test_terminate_connection_multiattached_diffhost(self,"},{"line_number":1017,"context_line":"                                                         mock_get_volume_count,"},{"line_number":1018,"context_line":"                                                         mock_find_wwns,"},{"line_number":1019,"context_line":"                                                         mock_unmap_volume,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_cbb36097","line":1016,"range":{"start_line":1016,"start_character":0,"end_line":1016,"end_character":62},"updated":"2019-06-27 23:07:57.000000000","message":"ditto","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"}],"cinder/tests/unit/volume/drivers/dell_emc/sc/test_sc.py":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"3eeae2590e1d87d85def1d892182dc129aed6f4f","unresolved":false,"context_lines":[{"line_number":1544,"context_line":"                          self.driver.terminate_connection,"},{"line_number":1545,"context_line":"                          volume,"},{"line_number":1546,"context_line":"                          connector)"},{"line_number":1547,"context_line":""},{"line_number":1548,"context_line":"    @mock.patch.object(storagecenter_api.SCApi,"},{"line_number":1549,"context_line":"                       \u0027find_server\u0027,"},{"line_number":1550,"context_line":"                       return_value\u003dSCSERVER)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_4b65301d","line":1547,"range":{"start_line":1547,"start_character":0,"end_line":1547,"end_character":0},"updated":"2019-06-27 23:07:57.000000000","message":"this is looks identical to test_fc.py change.\nDoes that mean that this code is only executes for iSCSI testing? If it is executed for both FC and iSCSI why do we need both of them?","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"0d4b1ee10d023136094c783ff2be312c42a75f9a","unresolved":false,"context_lines":[{"line_number":1544,"context_line":"                          self.driver.terminate_connection,"},{"line_number":1545,"context_line":"                          volume,"},{"line_number":1546,"context_line":"                          connector)"},{"line_number":1547,"context_line":""},{"line_number":1548,"context_line":"    @mock.patch.object(storagecenter_api.SCApi,"},{"line_number":1549,"context_line":"                       \u0027find_server\u0027,"},{"line_number":1550,"context_line":"                       return_value\u003dSCSERVER)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_fef060ff","line":1547,"range":{"start_line":1547,"start_character":0,"end_line":1547,"end_character":0},"in_reply_to":"9fb8cfa7_4b65301d","updated":"2019-06-28 02:53:57.000000000","message":"This test case is for iscsi","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"3eeae2590e1d87d85def1d892182dc129aed6f4f","unresolved":false,"context_lines":[{"line_number":1554,"context_line":"    @mock.patch.object(storagecenter_api.SCApi,"},{"line_number":1555,"context_line":"                       \u0027unmap_volume\u0027,"},{"line_number":1556,"context_line":"                       return_value\u003dTrue)"},{"line_number":1557,"context_line":"    def test_terminate_connection_multiattached_host(self,"},{"line_number":1558,"context_line":"                                                     mock_unmap_volume,"},{"line_number":1559,"context_line":"                                                     mock_find_volume,"},{"line_number":1560,"context_line":"                                                     mock_find_server,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_ebae642c","line":1557,"range":{"start_line":1557,"start_character":0,"end_line":1557,"end_character":57},"updated":"2019-06-27 23:07:57.000000000","message":"ditto","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"0d4b1ee10d023136094c783ff2be312c42a75f9a","unresolved":false,"context_lines":[{"line_number":1554,"context_line":"    @mock.patch.object(storagecenter_api.SCApi,"},{"line_number":1555,"context_line":"                       \u0027unmap_volume\u0027,"},{"line_number":1556,"context_line":"                       return_value\u003dTrue)"},{"line_number":1557,"context_line":"    def test_terminate_connection_multiattached_host(self,"},{"line_number":1558,"context_line":"                                                     mock_unmap_volume,"},{"line_number":1559,"context_line":"                                                     mock_find_volume,"},{"line_number":1560,"context_line":"                                                     mock_find_server,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_bede686a","line":1557,"range":{"start_line":1557,"start_character":0,"end_line":1557,"end_character":57},"in_reply_to":"9fb8cfa7_ebae642c","updated":"2019-06-28 02:53:57.000000000","message":"same","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"3eeae2590e1d87d85def1d892182dc129aed6f4f","unresolved":false,"context_lines":[{"line_number":1591,"context_line":"    @mock.patch.object(storagecenter_api.SCApi,"},{"line_number":1592,"context_line":"                       \u0027unmap_volume\u0027,"},{"line_number":1593,"context_line":"                       return_value\u003dTrue)"},{"line_number":1594,"context_line":"    def test_terminate_connection_multiattached_diffhost(self,"},{"line_number":1595,"context_line":"                                                         mock_unmap_volume,"},{"line_number":1596,"context_line":"                                                         mock_find_volume,"},{"line_number":1597,"context_line":"                                                         mock_find_server,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_aba4ec4b","line":1594,"range":{"start_line":1594,"start_character":0,"end_line":1594,"end_character":62},"updated":"2019-06-27 23:07:57.000000000","message":"ditto","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"}],"cinder/volume/drivers/dell_emc/sc/storagecenter_common.py":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"3eeae2590e1d87d85def1d892182dc129aed6f4f","unresolved":false,"context_lines":[{"line_number":2048,"context_line":"            return False"},{"line_number":2049,"context_line":""},{"line_number":2050,"context_line":"        for a in volume_attachment:"},{"line_number":2051,"context_line":"            LOG.debug(\u0027attachment %s.\u0027, a)"},{"line_number":2052,"context_line":""},{"line_number":2053,"context_line":"        attachment \u003d [a for a in volume_attachment"},{"line_number":2054,"context_line":"                      if a[\u0027attach_status\u0027] \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_8b7ec8ac","line":2051,"range":{"start_line":2051,"start_character":0,"end_line":2051,"end_character":42},"updated":"2019-06-27 23:07:57.000000000","message":"should we add node info also?","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"0d4b1ee10d023136094c783ff2be312c42a75f9a","unresolved":false,"context_lines":[{"line_number":2048,"context_line":"            return False"},{"line_number":2049,"context_line":""},{"line_number":2050,"context_line":"        for a in volume_attachment:"},{"line_number":2051,"context_line":"            LOG.debug(\u0027attachment %s.\u0027, a)"},{"line_number":2052,"context_line":""},{"line_number":2053,"context_line":"        attachment \u003d [a for a in volume_attachment"},{"line_number":2054,"context_line":"                      if a[\u0027attach_status\u0027] \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_61f5b556","line":2051,"range":{"start_line":2051,"start_character":0,"end_line":2051,"end_character":42},"in_reply_to":"9fb8cfa7_8b7ec8ac","updated":"2019-06-28 02:53:57.000000000","message":"Just a debug info. The host_name is already logged above","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"3eeae2590e1d87d85def1d892182dc129aed6f4f","unresolved":false,"context_lines":[{"line_number":2054,"context_line":"                      if a[\u0027attach_status\u0027] \u003d\u003d"},{"line_number":2055,"context_line":"                      fields.VolumeAttachStatus.ATTACHED"},{"line_number":2056,"context_line":"                      and a[\u0027attached_host\u0027] \u003d\u003d host_name]"},{"line_number":2057,"context_line":"        LOG.info(\u0027is_multiattach_to_host: attachment %s.\u0027, attachment)"},{"line_number":2058,"context_line":""},{"line_number":2059,"context_line":"        return len(attachment) \u003e 1"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_4b4e9097","line":2057,"range":{"start_line":2057,"start_character":0,"end_line":2057,"end_character":70},"updated":"2019-06-27 23:07:57.000000000","message":"ditto for node info.","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a757a72e9d90f7729ce9fea440e61aec354e0a73","unresolved":false,"context_lines":[{"line_number":2041,"context_line":"        # Because the backend cannot recognize the volume is attached to two"},{"line_number":2042,"context_line":"        # or more instances, we should keep the volume attached to the nova"},{"line_number":2043,"context_line":"        # host until the volume is detached from the last instance."},{"line_number":2044,"context_line":"        LOG.info(\u0027is_multiattach_to_host: volume_attachment %s.\u0027,"},{"line_number":2045,"context_line":"                 volume_attachment)"},{"line_number":2046,"context_line":"        LOG.info(\u0027is_multiattach_to_host: host_name %s.\u0027, host_name)"},{"line_number":2047,"context_line":"        if not volume_attachment:"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_80aa7517","line":2044,"range":{"start_line":2044,"start_character":12,"end_line":2044,"end_character":16},"updated":"2019-08-29 15:52:50.000000000","message":"These really seem like they should be debug level. And the two log calls could just be combined into one.","commit_id":"99fe2757b7c9ffbf8812fa3735c2937a8a6c2c48"}],"cinder/volume/drivers/dell_emc/sc/storagecenter_fc.py":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"3eeae2590e1d87d85def1d892182dc129aed6f4f","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        if is_multiattached:"},{"line_number":265,"context_line":"            LOG.info(\u0027Cannot terminate connection: \u0027"},{"line_number":266,"context_line":"                     \u0027%(vol)s is multiattached.\u0027,"},{"line_number":267,"context_line":"                     {\u0027vol\u0027: volume_name})"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"            info[\u0027data\u0027] \u003d \"Volume is multiattached. Cannot be terminated.\""},{"line_number":270,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_6b36f405","line":267,"range":{"start_line":267,"start_character":0,"end_line":267,"end_character":42},"updated":"2019-06-27 23:07:57.000000000","message":"add node info.","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"aff1cfca6a90184d42f8ab92eeaa3c88eafdf00d","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                     {\u0027vol\u0027: volume_name})"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"            info[\u0027data\u0027] \u003d \"Volume is multiattached. Cannot be terminated.\""},{"line_number":270,"context_line":"            return True"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        with self._client.open_connection() as api:"},{"line_number":273,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_426e2a97","line":270,"range":{"start_line":270,"start_character":19,"end_line":270,"end_character":23},"updated":"2019-07-03 12:49:49.000000000","message":"The previous version of this function either returned an \u0027info\u0027 dict or raised an exception.  Now it may also return True.  I think maybe you meant to return \u0027info\u0027 here, because otherwise setting info[\u0027data\u0027] at line 269 is pointless.","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"673f5ba34c58fb598168e2d53ef2b45f80ec5111","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                     {\u0027vol\u0027: volume_name})"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"            info[\u0027data\u0027] \u003d \"Volume is multiattached. Cannot be terminated.\""},{"line_number":270,"context_line":"            return True"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        with self._client.open_connection() as api:"},{"line_number":273,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_0c82bbc9","line":270,"range":{"start_line":270,"start_character":19,"end_line":270,"end_character":23},"in_reply_to":"9fb8cfa7_426e2a97","updated":"2019-07-03 18:38:38.000000000","message":"Done","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"}],"cinder/volume/drivers/dell_emc/sc/storagecenter_iscsi.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a78a58f5d0dfce6ca34d3915b410784ec9cf6d8d","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        LOG.info(\u0027Volume in terminate connection: %(vol)s\u0027,"},{"line_number":260,"context_line":"                 {\u0027vol\u0027: volume})"},{"line_number":261,"context_line":"        # None `connector` indicates force detach, then detach all even the"},{"line_number":262,"context_line":"        # volume is multi-attached."},{"line_number":263,"context_line":"        is_multiattached \u003d (connector is not None and"},{"line_number":264,"context_line":"                            \u0027volume_attachment\u0027 in volume and"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_7a4ae127","line":261,"range":{"start_line":261,"start_character":67,"end_line":261,"end_character":75},"updated":"2019-05-05 12:46:44.000000000","message":"even if the","commit_id":"5b9a818fae80b03878a1d23a28c722ef8247eeb9"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"f204a3374924a9f70d196bdb9cc3f024aac78bf6","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        LOG.info(\u0027Volume in terminate connection: %(vol)s\u0027,"},{"line_number":260,"context_line":"                 {\u0027vol\u0027: volume})"},{"line_number":261,"context_line":"        # None `connector` indicates force detach, then detach all even the"},{"line_number":262,"context_line":"        # volume is multi-attached."},{"line_number":263,"context_line":"        is_multiattached \u003d (connector is not None and"},{"line_number":264,"context_line":"                            \u0027volume_attachment\u0027 in volume and"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_39a1cdaa","line":261,"range":{"start_line":261,"start_character":67,"end_line":261,"end_character":75},"in_reply_to":"dfbec78f_7a4ae127","updated":"2019-05-06 15:49:44.000000000","message":"Done","commit_id":"5b9a818fae80b03878a1d23a28c722ef8247eeb9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a78a58f5d0dfce6ca34d3915b410784ec9cf6d8d","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                 {\u0027vol\u0027: volume})"},{"line_number":261,"context_line":"        # None `connector` indicates force detach, then detach all even the"},{"line_number":262,"context_line":"        # volume is multi-attached."},{"line_number":263,"context_line":"        is_multiattached \u003d (connector is not None and"},{"line_number":264,"context_line":"                            \u0027volume_attachment\u0027 in volume and"},{"line_number":265,"context_line":"                            self.is_multiattach_to_host("},{"line_number":266,"context_line":"                                volume.get(\u0027volume_attachment\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_5ae35d34","line":263,"range":{"start_line":263,"start_character":28,"end_line":263,"end_character":49},"updated":"2019-05-05 12:46:44.000000000","message":"isn\u0027t this redundant since we already have a case for\nif connector is None at L#256","commit_id":"5b9a818fae80b03878a1d23a28c722ef8247eeb9"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"f204a3374924a9f70d196bdb9cc3f024aac78bf6","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                 {\u0027vol\u0027: volume})"},{"line_number":261,"context_line":"        # None `connector` indicates force detach, then detach all even the"},{"line_number":262,"context_line":"        # volume is multi-attached."},{"line_number":263,"context_line":"        is_multiattached \u003d (connector is not None and"},{"line_number":264,"context_line":"                            \u0027volume_attachment\u0027 in volume and"},{"line_number":265,"context_line":"                            self.is_multiattach_to_host("},{"line_number":266,"context_line":"                                volume.get(\u0027volume_attachment\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_99c6b967","line":263,"range":{"start_line":263,"start_character":28,"end_line":263,"end_character":49},"in_reply_to":"dfbec78f_5ae35d34","updated":"2019-05-06 15:49:44.000000000","message":"Done","commit_id":"5b9a818fae80b03878a1d23a28c722ef8247eeb9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a78a58f5d0dfce6ca34d3915b410784ec9cf6d8d","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                            LOG.debug(\u0027Connection terminated\u0027)"},{"line_number":309,"context_line":"                            return"},{"line_number":310,"context_line":"                    else:"},{"line_number":311,"context_line":"                        LOG.info(\u0027Terminate connection: \u0027"},{"line_number":312,"context_line":"                                 \u0027%(vol)s is multiattached.\u0027,"},{"line_number":313,"context_line":"                                 {\u0027vol\u0027: volume_name})"},{"line_number":314,"context_line":"                        return"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_ba5939ff","line":311,"range":{"start_line":311,"start_character":34,"end_line":311,"end_character":55},"updated":"2019-05-05 12:46:44.000000000","message":"IIUC we cannot terminate connection from host until volume detaches from all instance on that host\nshouldn\u0027t we write it as \"Cannot terminate connection : %(vol)s is multiattached\"","commit_id":"5b9a818fae80b03878a1d23a28c722ef8247eeb9"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"f204a3374924a9f70d196bdb9cc3f024aac78bf6","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                            LOG.debug(\u0027Connection terminated\u0027)"},{"line_number":309,"context_line":"                            return"},{"line_number":310,"context_line":"                    else:"},{"line_number":311,"context_line":"                        LOG.info(\u0027Terminate connection: \u0027"},{"line_number":312,"context_line":"                                 \u0027%(vol)s is multiattached.\u0027,"},{"line_number":313,"context_line":"                                 {\u0027vol\u0027: volume_name})"},{"line_number":314,"context_line":"                        return"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_d9cc318b","line":311,"range":{"start_line":311,"start_character":34,"end_line":311,"end_character":55},"in_reply_to":"dfbec78f_ba5939ff","updated":"2019-05-06 15:49:44.000000000","message":"Done","commit_id":"5b9a818fae80b03878a1d23a28c722ef8247eeb9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"aff1cfca6a90184d42f8ab92eeaa3c88eafdf00d","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            LOG.info(\u0027Cannot terminate connection: \u0027"},{"line_number":275,"context_line":"                     \u0027%(vol)s is multiattached.\u0027,"},{"line_number":276,"context_line":"                     {\u0027vol\u0027: volume_name})"},{"line_number":277,"context_line":"            return True"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        with self._client.open_connection() as api:"},{"line_number":280,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_62324e61","line":277,"range":{"start_line":277,"start_character":19,"end_line":277,"end_character":23},"updated":"2019-07-03 12:49:49.000000000","message":"This function used to return None upon success.  (Just an observation.)","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"673f5ba34c58fb598168e2d53ef2b45f80ec5111","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            LOG.info(\u0027Cannot terminate connection: \u0027"},{"line_number":275,"context_line":"                     \u0027%(vol)s is multiattached.\u0027,"},{"line_number":276,"context_line":"                     {\u0027vol\u0027: volume_name})"},{"line_number":277,"context_line":"            return True"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        with self._client.open_connection() as api:"},{"line_number":280,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_2c60d732","line":277,"range":{"start_line":277,"start_character":19,"end_line":277,"end_character":23},"in_reply_to":"7faddb67_699fa1b4","updated":"2019-07-03 18:38:38.000000000","message":"Yes, that\u0027s the reason I was returning True","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"a94268cf04d928210f7848784f00fca4ac77e156","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            LOG.info(\u0027Cannot terminate connection: \u0027"},{"line_number":275,"context_line":"                     \u0027%(vol)s is multiattached.\u0027,"},{"line_number":276,"context_line":"                     {\u0027vol\u0027: volume_name})"},{"line_number":277,"context_line":"            return True"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        with self._client.open_connection() as api:"},{"line_number":280,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_699fa1b4","line":277,"range":{"start_line":277,"start_character":19,"end_line":277,"end_character":23},"in_reply_to":"9fb8cfa7_62324e61","updated":"2019-07-03 16:56:42.000000000","message":"Does this change behavior through this terminate_connection path, where this return value is used to determine \"shared_connections\"?\n    https://opendev.org/openstack/cinder/src/commit/9dd5232ea5ee36beda56946647fda9002fa0a608/cinder/volume/manager.py#L4604","commit_id":"2918ab13bc4dd4f253e3137fbd0b5965a34e3f0d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"0a15641540f1638bff1f0ce1cdeb2057a5bcc0e1","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                 {\u0027vol\u0027: volume})"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        is_multiattached \u003d (hasattr(volume, \u0027volume_attachment\u0027) and"},{"line_number":270,"context_line":"                            self.is_multiattach_to_host("},{"line_number":271,"context_line":"                                volume.get(\u0027volume_attachment\u0027),"},{"line_number":272,"context_line":"                                connector[\u0027host\u0027]))"},{"line_number":273,"context_line":"        if is_multiattached:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_d68a7719","line":270,"range":{"start_line":270,"start_character":28,"end_line":270,"end_character":56},"updated":"2019-07-11 17:54:51.000000000","message":"I think this will race if you get two calls for terminate_connection simultaneously with different attachments, which could result in the teardown never happening for that volume.","commit_id":"5f2cfc79fcf1bbfb60e1139ad9a5c74a205bc4ad"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"8263c1c1f68fa9600a9eee41b50c1df068d0659b","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                 {\u0027vol\u0027: volume})"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        is_multiattached \u003d (hasattr(volume, \u0027volume_attachment\u0027) and"},{"line_number":270,"context_line":"                            self.is_multiattach_to_host("},{"line_number":271,"context_line":"                                volume.get(\u0027volume_attachment\u0027),"},{"line_number":272,"context_line":"                                connector[\u0027host\u0027]))"},{"line_number":273,"context_line":"        if is_multiattached:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_87a92fde","line":270,"range":{"start_line":270,"start_character":28,"end_line":270,"end_character":56},"in_reply_to":"7faddb67_8e117807","updated":"2019-07-29 19:26:55.000000000","message":"Checked the driver code, there is no such code in the driver to handle race scenarios that exists as of now. It will have to be designed in a separate patch","commit_id":"5f2cfc79fcf1bbfb60e1139ad9a5c74a205bc4ad"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"9e9c24b182f36336ab3dfec968feafd79cceac49","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                 {\u0027vol\u0027: volume})"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        is_multiattached \u003d (hasattr(volume, \u0027volume_attachment\u0027) and"},{"line_number":270,"context_line":"                            self.is_multiattach_to_host("},{"line_number":271,"context_line":"                                volume.get(\u0027volume_attachment\u0027),"},{"line_number":272,"context_line":"                                connector[\u0027host\u0027]))"},{"line_number":273,"context_line":"        if is_multiattached:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_e7380aef","line":270,"range":{"start_line":270,"start_character":28,"end_line":270,"end_character":56},"in_reply_to":"7faddb67_d68a7719","updated":"2019-07-12 19:05:49.000000000","message":"Isn\u0027t that the case for any operation on the same volume?","commit_id":"5f2cfc79fcf1bbfb60e1139ad9a5c74a205bc4ad"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"4e4ecc8ff43e492cd44183c0ab79af3ea5f09874","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                 {\u0027vol\u0027: volume})"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        is_multiattached \u003d (hasattr(volume, \u0027volume_attachment\u0027) and"},{"line_number":270,"context_line":"                            self.is_multiattach_to_host("},{"line_number":271,"context_line":"                                volume.get(\u0027volume_attachment\u0027),"},{"line_number":272,"context_line":"                                connector[\u0027host\u0027]))"},{"line_number":273,"context_line":"        if is_multiattached:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_8e117807","line":270,"range":{"start_line":270,"start_character":28,"end_line":270,"end_character":56},"in_reply_to":"7faddb67_e7380aef","updated":"2019-07-25 16:59:13.000000000","message":"Yes, and the driver in general needs to (and probably does) handle this.\n\nBut, in this case, there is new code being added that results in the volume never being unmapped on backend, even after all connections are terminated.  Isn\u0027t this is different from other similar race scenarios?","commit_id":"5f2cfc79fcf1bbfb60e1139ad9a5c74a205bc4ad"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a757a72e9d90f7729ce9fea440e61aec354e0a73","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from oslo_log import log as logging"},{"line_number":18,"context_line":"from oslo_utils import excutils"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cinder import exception"},{"line_number":22,"context_line":"from cinder.i18n import _"},{"line_number":23,"context_line":"from cinder import interface"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_c0462d7c","line":20,"updated":"2019-08-29 15:52:50.000000000","message":"Not sure why this extra line was added. That should be removed.","commit_id":"99fe2757b7c9ffbf8812fa3735c2937a8a6c2c48"}]}
