)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"3674cc4c83b2e16b81c719fea31e828eb116055c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Nikolas Hermanns \u003cnikolas.hermanns@ericsson.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-10 10:39:15 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"LibcirtDriver: Add post_connection_terminated"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When multiple iSCSI connections are terminated"},{"line_number":10,"context_line":"it is very likely to happen that not all"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9aa53dc9_2b1a8e7d","line":7,"updated":"2015-04-10 13:30:44.000000000","message":"LibvirtDriver or just Libvirt","commit_id":"1d470deb516eceaa81016248de287aa0dd064760"}],"nova/compute/manager.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bba68ff95b23914fd598bee2824c62762b3a3d0f","unresolved":false,"context_lines":[{"line_number":3676,"context_line":"        connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":3677,"context_line":"        for bdm in bdms:"},{"line_number":3678,"context_line":"            if bdm.is_volume:"},{"line_number":3679,"context_line":"                self.volume_api.terminate_connection(context, bdm.volume_id,"},{"line_number":3680,"context_line":"                                                     connector)"},{"line_number":3681,"context_line":"                self.driver.post_connection_terminated("},{"line_number":3682,"context_line":"                    bdm, block_device_info\u003dblock_device_info)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_f6f3d871","line":3679,"updated":"2015-07-13 08:47:51.000000000","message":"why do we not invoke this from the volume_api terminate connection when it has completed\nthis just looks very error prone moving forwards when someone adds in a new terminate_connection call","commit_id":"76b47a3a997b2c13784e3c003683166994a29423"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"921ea97a28413390bee66890f5bae96ba3af9c2f","unresolved":false,"context_lines":[{"line_number":3676,"context_line":"        connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":3677,"context_line":"        for bdm in bdms:"},{"line_number":3678,"context_line":"            if bdm.is_volume:"},{"line_number":3679,"context_line":"                self.volume_api.terminate_connection(context, bdm.volume_id,"},{"line_number":3680,"context_line":"                                                     connector)"},{"line_number":3681,"context_line":"                self.driver.post_connection_terminated("},{"line_number":3682,"context_line":"                    bdm, block_device_info\u003dblock_device_info)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_6586f414","line":3679,"in_reply_to":"9a41bdd9_f6f3d871","updated":"2015-07-14 08:31:12.000000000","message":"refactored, thanks","commit_id":"76b47a3a997b2c13784e3c003683166994a29423"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"fd6515a36031c11b4921a8f45bade00ea6203c1c","unresolved":false,"context_lines":[{"line_number":2239,"context_line":"                #             just tell cinder that we are done with it."},{"line_number":2240,"context_line":"                connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":2241,"context_line":"                self._volume_api_terminate_connection("},{"line_number":2242,"context_line":"                    context, bdm.volume_id, connector, bdm,"},{"line_number":2243,"context_line":"                    block_device_info\u003dblock_device_info)"},{"line_number":2244,"context_line":"                self.volume_api.detach(context, bdm.volume_id)"},{"line_number":2245,"context_line":"            except exception.DiskNotFound as exc:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_a535dcf7","line":2242,"updated":"2015-07-14 08:40:51.000000000","message":"I think you can remove volume_id here and use bdm.colume_id in _volume_api_terminate_connection method","commit_id":"da467cf0a5350be3be4aed23491f0f473829a130"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"b04158554af75eb6d424fd022639e8f1dafea022","unresolved":false,"context_lines":[{"line_number":2239,"context_line":"                #             just tell cinder that we are done with it."},{"line_number":2240,"context_line":"                connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":2241,"context_line":"                self._volume_api_terminate_connection("},{"line_number":2242,"context_line":"                    context, bdm.volume_id, connector, bdm,"},{"line_number":2243,"context_line":"                    block_device_info\u003dblock_device_info)"},{"line_number":2244,"context_line":"                self.volume_api.detach(context, bdm.volume_id)"},{"line_number":2245,"context_line":"            except exception.DiskNotFound as exc:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_c81b551a","line":2242,"in_reply_to":"9a41bdd9_a535dcf7","updated":"2015-07-14 08:47:47.000000000","message":"Done","commit_id":"da467cf0a5350be3be4aed23491f0f473829a130"}],"nova/virt/driver.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"aad82473f90108c6fb8ce5a7193532ba255bc00f","unresolved":false,"context_lines":[{"line_number":490,"context_line":""},{"line_number":491,"context_line":"    def post_connection_terminated(self, bdm, connection_info\u003dNone,"},{"line_number":492,"context_line":"                                   block_device_info\u003dNone):"},{"line_number":493,"context_line":"        \"\"\"Perform post connection terminated steps.\"\"\""},{"line_number":494,"context_line":"        pass"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def swap_volume(self, old_connection_info, new_connection_info,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_026bf11e","line":493,"updated":"2015-07-29 12:30:50.000000000","message":"Please provide more useful docs here. All parameters should be documented and you should explain what this is for in more detail.\n\nAlso, why do these params need to be optional - if we can make them mandatory it is generally preferrable IMHO.","commit_id":"0e3c68be50b8fd9c65d8ef3a8c1c2b7a2c2f4d81"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e4ea4cc7610c484004ad15444d462fe758b6c637","unresolved":false,"context_lines":[{"line_number":1211,"context_line":""},{"line_number":1212,"context_line":"        self._disconnect_volume(connection_info, disk_dev)"},{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"    def post_connection_terminated(self, instance, bdm,"},{"line_number":1215,"context_line":"                                   connection_info\u003dNone,"},{"line_number":1216,"context_line":"                                   block_device_info\u003dNone):"},{"line_number":1217,"context_line":"        if hasattr(bdm, \u0027device_name\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dac4157f_8c6a8a19","line":1214,"range":{"start_line":1214,"start_character":8,"end_line":1214,"end_character":34},"updated":"2015-04-20 14:37:41.000000000","message":"As a convention, you need add some unit test specific for the method besides adjusting current unit test.","commit_id":"1d470deb516eceaa81016248de287aa0dd064760"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e4ea4cc7610c484004ad15444d462fe758b6c637","unresolved":false,"context_lines":[{"line_number":1218,"context_line":"            mountpoint \u003d bdm.device_name"},{"line_number":1219,"context_line":"        else:"},{"line_number":1220,"context_line":"            return"},{"line_number":1221,"context_line":"        if isinstance(connection_info, dict) and\\"},{"line_number":1222,"context_line":"                connection_info.get(\u0027driver_volume_type\u0027, \u0027\u0027) \u003d\u003d \"iscsi\":"},{"line_number":1223,"context_line":"            disk_dev \u003d mountpoint.rpartition(\"/\")[2]"},{"line_number":1224,"context_line":"            self._disconnect_volume(connection_info, disk_dev)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dac4157f_4c90f2ec","line":1221,"updated":"2015-04-20 14:37:41.000000000","message":"Usually parentheses are preferred to back slash.","commit_id":"1d470deb516eceaa81016248de287aa0dd064760"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e4ea4cc7610c484004ad15444d462fe758b6c637","unresolved":false,"context_lines":[{"line_number":1231,"context_line":"                if disk_dev \u003d\u003d mountpoint.rpartition(\"/\")[2] and\\"},{"line_number":1232,"context_line":"                        connection_info.get(\u0027driver_volume_type\u0027,"},{"line_number":1233,"context_line":"                                            \u0027\u0027) \u003d\u003d \"iscsi\":"},{"line_number":1234,"context_line":"                    self._disconnect_volume(connection_info, disk_dev)"},{"line_number":1235,"context_line":""},{"line_number":1236,"context_line":"    def attach_interface(self, instance, image_meta, vif):"},{"line_number":1237,"context_line":"        virt_dom \u003d self._host.get_domain(instance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dac4157f_b8bb390e","line":1234,"updated":"2015-04-20 14:37:41.000000000","message":"Can \"break\" be added here?","commit_id":"1d470deb516eceaa81016248de287aa0dd064760"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bba68ff95b23914fd598bee2824c62762b3a3d0f","unresolved":false,"context_lines":[{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"        self._disconnect_volume(connection_info, disk_dev)"},{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"    def post_connection_terminated(self, bdm, connection_info\u003dNone,"},{"line_number":1238,"context_line":"                                   block_device_info\u003dNone):"},{"line_number":1239,"context_line":"        if hasattr(bdm, \u0027device_name\u0027):"},{"line_number":1240,"context_line":"            mountpoint \u003d bdm.device_name"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_567884c4","line":1237,"updated":"2015-07-13 08:47:51.000000000","message":"this is a new driver driver method. can you please add a doc impact to the the commit message","commit_id":"76b47a3a997b2c13784e3c003683166994a29423"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"921ea97a28413390bee66890f5bae96ba3af9c2f","unresolved":false,"context_lines":[{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"        self._disconnect_volume(connection_info, disk_dev)"},{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"    def post_connection_terminated(self, bdm, connection_info\u003dNone,"},{"line_number":1238,"context_line":"                                   block_device_info\u003dNone):"},{"line_number":1239,"context_line":"        if hasattr(bdm, \u0027device_name\u0027):"},{"line_number":1240,"context_line":"            mountpoint \u003d bdm.device_name"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_c577c038","line":1237,"in_reply_to":"9a41bdd9_567884c4","updated":"2015-07-14 08:31:12.000000000","message":"Done","commit_id":"76b47a3a997b2c13784e3c003683166994a29423"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"aad82473f90108c6fb8ce5a7193532ba255bc00f","unresolved":false,"context_lines":[{"line_number":1210,"context_line":"        else:"},{"line_number":1211,"context_line":"            return"},{"line_number":1212,"context_line":"        if isinstance(connection_info, dict) and connection_info.get("},{"line_number":1213,"context_line":"                \u0027driver_volume_type\u0027, \u0027\u0027) \u003d\u003d \"iscsi\":"},{"line_number":1214,"context_line":"            disk_dev \u003d mountpoint.rpartition(\"/\")[2]"},{"line_number":1215,"context_line":"            self._disconnect_volume(connection_info, disk_dev)"},{"line_number":1216,"context_line":"        elif block_device_info:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_226b8df2","line":1213,"updated":"2015-07-29 12:30:50.000000000","message":"The libvirt driver.py file should really not contain logic that is conditional based on driver_volume_type. We have a class hierarchy for volume drivers so that we can take different actions for each type of storage, so we should be using that facility. So add a new method to LibvirtBaseVolumeDriver() that can be called in this scenario, and take whatever action is needed for iscsi","commit_id":"0e3c68be50b8fd9c65d8ef3a8c1c2b7a2c2f4d81"}]}
