)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"82390c23cf21291aa628ab49f509224c0bcfeee2","unresolved":true,"context_lines":[{"line_number":18,"context_line":"This is part of the longer series trying to transform the existing"},{"line_number":19,"context_line":"device detach handling to use libvirt events."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Co-Authored-By: Lee Yarwood \u003clyarwood@redhat.com\u003e"},{"line_number":22,"context_line":"Related-Bug: #1882521"},{"line_number":23,"context_line":"Change-Id: I92eb27b710f16d69cf003712431fe225a014c3a8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"5c59d2df_f604e08a","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":49},"updated":"2021-03-01 22:22:30.000000000","message":"Very kind to still include this but it\u0027s different enough from my initial change now that I feel comfortable approving this.","commit_id":"4a70fc9cfb1d4354969c75e12fb94e1681e28ab7"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"6b8236b257fc6e1f0b81272070b1b8949e2eb5e6","unresolved":true,"context_lines":[{"line_number":27817,"context_line":""},{"line_number":27818,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.LibvirtDriver._handle_libvirt_events\u0027)"},{"line_number":27819,"context_line":"    def test_libvirt_device_removal_events(self, mock_handle_event):"},{"line_number":27820,"context_line":"        for event_type in ("},{"line_number":27821,"context_line":"            virtevent.DeviceRemovedEvent, virtevent.DeviceRemovalFailedEvent"},{"line_number":27822,"context_line":"        ):"},{"line_number":27823,"context_line":"            mock_handle_event.reset_mock()"},{"line_number":27824,"context_line":"            drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":27825,"context_line":"            event \u003d event_type(uuid\u003duuids.event, dev\u003dmock.sentinel.dev_alias)"}],"source_content_type":"text/x-python","patch_set":9,"id":"cbbd8e6a_eb990c9f","line":27822,"range":{"start_line":27820,"start_character":2,"end_line":27822,"end_character":10},"updated":"2021-01-26 16:00:19.000000000","message":"nit - ddt?","commit_id":"6e985fffa2844f449d2a4b9c7583e7091a591140"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"52892ef1a363b3a33726a5d113149090c5bc0102","unresolved":false,"context_lines":[{"line_number":27817,"context_line":""},{"line_number":27818,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.LibvirtDriver._handle_libvirt_events\u0027)"},{"line_number":27819,"context_line":"    def test_libvirt_device_removal_events(self, mock_handle_event):"},{"line_number":27820,"context_line":"        for event_type in ("},{"line_number":27821,"context_line":"            virtevent.DeviceRemovedEvent, virtevent.DeviceRemovalFailedEvent"},{"line_number":27822,"context_line":"        ):"},{"line_number":27823,"context_line":"            mock_handle_event.reset_mock()"},{"line_number":27824,"context_line":"            drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":27825,"context_line":"            event \u003d event_type(uuid\u003duuids.event, dev\u003dmock.sentinel.dev_alias)"}],"source_content_type":"text/x-python","patch_set":9,"id":"b8a93f3f_11351fcc","line":27822,"range":{"start_line":27820,"start_character":2,"end_line":27822,"end_character":10},"in_reply_to":"cbbd8e6a_eb990c9f","updated":"2021-01-29 12:03:18.000000000","message":"why not. Done","commit_id":"6e985fffa2844f449d2a4b9c7583e7091a591140"}],"nova/virt/event.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"6b8236b257fc6e1f0b81272070b1b8949e2eb5e6","unresolved":true,"context_lines":[{"line_number":147,"context_line":"            self.get_device())"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"class DeviceRemovalFailedEvent(DeviceRemovedEvent):"},{"line_number":151,"context_line":"    \"\"\"Libvirt sends this event after an unsuccessful device detach\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"08f3d815_2430b89a","line":150,"range":{"start_line":150,"start_character":6,"end_line":150,"end_character":50},"updated":"2021-01-26 16:00:19.000000000","message":"Doesn\u0027t this break your use of isinstance(obj, DeviceRemovedEvent) elsewhere?\n\nApologies for being picky but wouldn\u0027t a separate base class for these two work better?","commit_id":"6e985fffa2844f449d2a4b9c7583e7091a591140"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"52892ef1a363b3a33726a5d113149090c5bc0102","unresolved":false,"context_lines":[{"line_number":147,"context_line":"            self.get_device())"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"class DeviceRemovalFailedEvent(DeviceRemovedEvent):"},{"line_number":151,"context_line":"    \"\"\"Libvirt sends this event after an unsuccessful device detach\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"41e5a279_aab61cea","line":150,"range":{"start_line":150,"start_character":6,"end_line":150,"end_character":50},"in_reply_to":"08f3d815_2430b89a","updated":"2021-01-29 12:03:18.000000000","message":"Sure I can make this a child of LibvirtEvents. Actually I followed you lead here from https://review.opendev.org/c/openstack/nova/+/749929/1/nova/virt/event.py#142 :)","commit_id":"6e985fffa2844f449d2a4b9c7583e7091a591140"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c776a931893b3d60d6080123fdb0dfd09924bef9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"0454810a_f2e6e1d7","line":156,"updated":"2021-02-02 17:40:04.000000000","message":"Any reason we can\u0027t define this in \u0027nova.virt.libvirt.event\u0027 rather than having virt-specific code in the root \u0027nova.virt\u0027 module?","commit_id":"f9761ceddb85257a6f323d4df94cd782b8626ea2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f3e52740448ddf4bee09790d8bc089afb144c35b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"d2ed9676_fa1e1b02","line":156,"in_reply_to":"0454810a_f2e6e1d7","updated":"2021-02-08 17:06:46.000000000","message":"Done","commit_id":"f9761ceddb85257a6f323d4df94cd782b8626ea2"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"6b8236b257fc6e1f0b81272070b1b8949e2eb5e6","unresolved":true,"context_lines":[{"line_number":2041,"context_line":""},{"line_number":2042,"context_line":"    def _handle_libvirt_events(self, event: virtevent.LibvirtEvents) -\u003e None:"},{"line_number":2043,"context_line":"        if ("},{"line_number":2044,"context_line":"            isinstance(event, virtevent.DeviceRemovedEvent) or"},{"line_number":2045,"context_line":"            isinstance(event, virtevent.DeviceRemovalFailedEvent)"},{"line_number":2046,"context_line":"        ):"},{"line_number":2047,"context_line":"            # TODO(gibi): handle it"},{"line_number":2048,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":9,"id":"c17e3919_abda1d08","line":2045,"range":{"start_line":2044,"start_character":0,"end_line":2045,"end_character":65},"updated":"2021-01-26 16:00:19.000000000","message":"^ such as these checks, after this has already been checked below FWIW.","commit_id":"6e985fffa2844f449d2a4b9c7583e7091a591140"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"52892ef1a363b3a33726a5d113149090c5bc0102","unresolved":false,"context_lines":[{"line_number":2041,"context_line":""},{"line_number":2042,"context_line":"    def _handle_libvirt_events(self, event: virtevent.LibvirtEvents) -\u003e None:"},{"line_number":2043,"context_line":"        if ("},{"line_number":2044,"context_line":"            isinstance(event, virtevent.DeviceRemovedEvent) or"},{"line_number":2045,"context_line":"            isinstance(event, virtevent.DeviceRemovalFailedEvent)"},{"line_number":2046,"context_line":"        ):"},{"line_number":2047,"context_line":"            # TODO(gibi): handle it"},{"line_number":2048,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":9,"id":"8c81af22_65952d4e","line":2045,"range":{"start_line":2044,"start_character":0,"end_line":2045,"end_character":65},"in_reply_to":"c17e3919_abda1d08","updated":"2021-01-29 12:03:18.000000000","message":"Done the typing suggestion you made.\n\nThis \u0027if\u0027 here is to separate DeviceRemovedEvent and DeviceRemovalFailedEvent from other future LibvirtEvents children.","commit_id":"6e985fffa2844f449d2a4b9c7583e7091a591140"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6af1cdf224c8e14c42d969777d93f142b8449e07","unresolved":true,"context_lines":[{"line_number":1982,"context_line":"                                      block_device_info\u003dblock_device_info)"},{"line_number":1983,"context_line":"        return xml"},{"line_number":1984,"context_line":""},{"line_number":1985,"context_line":"    def _handle_libvirt_events(self, event: libvirtevent.LibvirtEvent"},{"line_number":1986,"context_line":"    ) -\u003e None:"},{"line_number":1987,"context_line":"        if ("},{"line_number":1988,"context_line":"            isinstance(event, libvirtevent.DeviceRemovedEvent) or"}],"source_content_type":"text/x-python","patch_set":11,"id":"2bf016cb_50b29ce6","line":1985,"range":{"start_line":1985,"start_character":30,"end_line":1985,"end_character":69},"updated":"2021-02-08 18:16:19.000000000","message":"nit: could we drag this down a line and indent, ideally with a trailing comma for good effect?\n\nPersonally, I\u0027d just fold this into the caller. The caller is tiny as-is and could easily have its logic reversed\n\n  if not isinstance(event, libvirtevent.LibvirtEvent):\n      super().emit_event(event)\n      return None\n\n  if not isinstance(event, (\n      libvirtevent.DeviceRemovedEvent,\n      libvirtevent.DeviceRemovalFailedEvent,\n  )):\n      LOG.debug(...)\n\n  # do stuff","commit_id":"8029f16221cbc425b4658ec5de1d72e49dfb88bb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a82320d8f6e8380b832599951e948a1cc159788d","unresolved":false,"context_lines":[{"line_number":1982,"context_line":"                                      block_device_info\u003dblock_device_info)"},{"line_number":1983,"context_line":"        return xml"},{"line_number":1984,"context_line":""},{"line_number":1985,"context_line":"    def _handle_libvirt_events(self, event: libvirtevent.LibvirtEvent"},{"line_number":1986,"context_line":"    ) -\u003e None:"},{"line_number":1987,"context_line":"        if ("},{"line_number":1988,"context_line":"            isinstance(event, libvirtevent.DeviceRemovedEvent) or"}],"source_content_type":"text/x-python","patch_set":11,"id":"d119848c_c749d795","line":1985,"range":{"start_line":1985,"start_character":30,"end_line":1985,"end_character":69},"in_reply_to":"2b88d643_d4d5ec65","updated":"2021-02-17 17:00:26.000000000","message":"folded into the caller.","commit_id":"8029f16221cbc425b4658ec5de1d72e49dfb88bb"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"ef5728728f915878677f406492feeff62f860583","unresolved":true,"context_lines":[{"line_number":1982,"context_line":"                                      block_device_info\u003dblock_device_info)"},{"line_number":1983,"context_line":"        return xml"},{"line_number":1984,"context_line":""},{"line_number":1985,"context_line":"    def _handle_libvirt_events(self, event: libvirtevent.LibvirtEvent"},{"line_number":1986,"context_line":"    ) -\u003e None:"},{"line_number":1987,"context_line":"        if ("},{"line_number":1988,"context_line":"            isinstance(event, libvirtevent.DeviceRemovedEvent) or"}],"source_content_type":"text/x-python","patch_set":11,"id":"2b88d643_d4d5ec65","line":1985,"range":{"start_line":1985,"start_character":30,"end_line":1985,"end_character":69},"in_reply_to":"2bf016cb_50b29ce6","updated":"2021-02-16 14:31:11.000000000","message":"+1","commit_id":"8029f16221cbc425b4658ec5de1d72e49dfb88bb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6af1cdf224c8e14c42d969777d93f142b8449e07","unresolved":true,"context_lines":[{"line_number":1986,"context_line":"    ) -\u003e None:"},{"line_number":1987,"context_line":"        if ("},{"line_number":1988,"context_line":"            isinstance(event, libvirtevent.DeviceRemovedEvent) or"},{"line_number":1989,"context_line":"            isinstance(event, libvirtevent.DeviceRemovalFailedEvent)"},{"line_number":1990,"context_line":"        ):"},{"line_number":1991,"context_line":"            # TODO(gibi): handle it"},{"line_number":1992,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":11,"id":"91bedf48_51db65b3","line":1989,"updated":"2021-02-08 18:16:19.000000000","message":"isinstance takes a tuple of possible types","commit_id":"8029f16221cbc425b4658ec5de1d72e49dfb88bb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a82320d8f6e8380b832599951e948a1cc159788d","unresolved":false,"context_lines":[{"line_number":1986,"context_line":"    ) -\u003e None:"},{"line_number":1987,"context_line":"        if ("},{"line_number":1988,"context_line":"            isinstance(event, libvirtevent.DeviceRemovedEvent) or"},{"line_number":1989,"context_line":"            isinstance(event, libvirtevent.DeviceRemovalFailedEvent)"},{"line_number":1990,"context_line":"        ):"},{"line_number":1991,"context_line":"            # TODO(gibi): handle it"},{"line_number":1992,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":11,"id":"09fc12c3_9148028d","line":1989,"in_reply_to":"91bedf48_51db65b3","updated":"2021-02-17 17:00:26.000000000","message":"\u003e isinstance takes a tuple of possible types\n\nTIL. Done.","commit_id":"8029f16221cbc425b4658ec5de1d72e49dfb88bb"}],"nova/virt/libvirt/event.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6af1cdf224c8e14c42d969777d93f142b8449e07","unresolved":true,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class DeviceRemovedEvent(LibvirtEvent):"},{"line_number":23,"context_line":"    \"\"\"Libvirt sends this event after a successful device detach\"\"\""},{"line_number":24,"context_line":"    def __init__(self, uuid, dev, timestamp\u003dNone):"},{"line_number":25,"context_line":"        super().__init__(uuid, timestamp)"},{"line_number":26,"context_line":"        self.dev \u003d dev"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"2ed03ddc_1b6238e9","line":24,"range":{"start_line":24,"start_character":23,"end_line":24,"end_character":48},"updated":"2021-02-08 18:16:19.000000000","message":"type hints would be 👌","commit_id":"8029f16221cbc425b4658ec5de1d72e49dfb88bb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a82320d8f6e8380b832599951e948a1cc159788d","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class DeviceRemovedEvent(LibvirtEvent):"},{"line_number":23,"context_line":"    \"\"\"Libvirt sends this event after a successful device detach\"\"\""},{"line_number":24,"context_line":"    def __init__(self, uuid, dev, timestamp\u003dNone):"},{"line_number":25,"context_line":"        super().__init__(uuid, timestamp)"},{"line_number":26,"context_line":"        self.dev \u003d dev"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"eceb7000_08d8bf53","line":24,"range":{"start_line":24,"start_character":23,"end_line":24,"end_character":48},"in_reply_to":"2ed03ddc_1b6238e9","updated":"2021-02-17 17:00:26.000000000","message":"Done","commit_id":"8029f16221cbc425b4658ec5de1d72e49dfb88bb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6af1cdf224c8e14c42d969777d93f142b8449e07","unresolved":true,"context_lines":[{"line_number":25,"context_line":"        super().__init__(uuid, timestamp)"},{"line_number":26,"context_line":"        self.dev \u003d dev"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def get_device(self):"},{"line_number":29,"context_line":"        return self.dev"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __repr__(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"8c2319e9_a7ecb81e","line":28,"updated":"2021-02-08 18:16:19.000000000","message":"This seems a bit unnecessary, especially when it\u0027s not duplicated below","commit_id":"8029f16221cbc425b4658ec5de1d72e49dfb88bb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a82320d8f6e8380b832599951e948a1cc159788d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        super().__init__(uuid, timestamp)"},{"line_number":26,"context_line":"        self.dev \u003d dev"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def get_device(self):"},{"line_number":29,"context_line":"        return self.dev"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __repr__(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"52dccd5e_62521679","line":28,"in_reply_to":"6cace870_68654118","updated":"2021-02-17 17:00:26.000000000","message":"Done","commit_id":"8029f16221cbc425b4658ec5de1d72e49dfb88bb"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"ef5728728f915878677f406492feeff62f860583","unresolved":true,"context_lines":[{"line_number":25,"context_line":"        super().__init__(uuid, timestamp)"},{"line_number":26,"context_line":"        self.dev \u003d dev"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def get_device(self):"},{"line_number":29,"context_line":"        return self.dev"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __repr__(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"6cace870_68654118","line":28,"in_reply_to":"8c2319e9_a7ecb81e","updated":"2021-02-16 14:31:11.000000000","message":"Yup, I think I included this in the copy paste of the original events but we don\u0027t need it.","commit_id":"8029f16221cbc425b4658ec5de1d72e49dfb88bb"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"ef5728728f915878677f406492feeff62f860583","unresolved":true,"context_lines":[{"line_number":28,"context_line":"    def get_device(self):"},{"line_number":29,"context_line":"        return self.dev"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __repr__(self):"},{"line_number":32,"context_line":"        return \"\u003c%s: %s, %s \u003d\u003e %s\u003e\" % ("},{"line_number":33,"context_line":"            self.__class__.__name__,"},{"line_number":34,"context_line":"            self.timestamp,"},{"line_number":35,"context_line":"            self.uuid,"},{"line_number":36,"context_line":"            self.get_device())"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class DeviceRemovalFailedEvent(LibvirtEvent):"}],"source_content_type":"text/x-python","patch_set":11,"id":"af20ce17_574d2a3b","line":36,"range":{"start_line":31,"start_character":0,"end_line":36,"end_character":30},"updated":"2021-02-16 14:31:11.000000000","message":"You need this below now that DeviceRemovalFailedEvent isn\u0027t inheriting from DeviceRemovedEvent.","commit_id":"8029f16221cbc425b4658ec5de1d72e49dfb88bb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a82320d8f6e8380b832599951e948a1cc159788d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    def get_device(self):"},{"line_number":29,"context_line":"        return self.dev"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __repr__(self):"},{"line_number":32,"context_line":"        return \"\u003c%s: %s, %s \u003d\u003e %s\u003e\" % ("},{"line_number":33,"context_line":"            self.__class__.__name__,"},{"line_number":34,"context_line":"            self.timestamp,"},{"line_number":35,"context_line":"            self.uuid,"},{"line_number":36,"context_line":"            self.get_device())"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class DeviceRemovalFailedEvent(LibvirtEvent):"}],"source_content_type":"text/x-python","patch_set":11,"id":"a21d279e_5934e1f3","line":36,"range":{"start_line":31,"start_character":0,"end_line":36,"end_character":30},"in_reply_to":"af20ce17_574d2a3b","updated":"2021-02-17 17:00:26.000000000","message":"Done","commit_id":"8029f16221cbc425b4658ec5de1d72e49dfb88bb"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c776a931893b3d60d6080123fdb0dfd09924bef9","unresolved":true,"context_lines":[{"line_number":394,"context_line":"            self._events_delayed[event.uuid].cancel()"},{"line_number":395,"context_line":"            self._events_delayed.pop(event.uuid, None)"},{"line_number":396,"context_line":"            LOG.debug(\"Removed pending event for %s due to \""},{"line_number":397,"context_line":"                      \"event\", event.uuid)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        if (isinstance(event, virtevent.LifecycleEvent) and"},{"line_number":400,"context_line":"            event.transition \u003d\u003d virtevent.EVENT_LIFECYCLE_STOPPED):"}],"source_content_type":"text/x-python","patch_set":10,"id":"35c9b414_8e49842e","line":397,"updated":"2021-02-02 17:40:04.000000000","message":"nit: one line?","commit_id":"f9761ceddb85257a6f323d4df94cd782b8626ea2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f3e52740448ddf4bee09790d8bc089afb144c35b","unresolved":false,"context_lines":[{"line_number":394,"context_line":"            self._events_delayed[event.uuid].cancel()"},{"line_number":395,"context_line":"            self._events_delayed.pop(event.uuid, None)"},{"line_number":396,"context_line":"            LOG.debug(\"Removed pending event for %s due to \""},{"line_number":397,"context_line":"                      \"event\", event.uuid)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        if (isinstance(event, virtevent.LifecycleEvent) and"},{"line_number":400,"context_line":"            event.transition \u003d\u003d virtevent.EVENT_LIFECYCLE_STOPPED):"}],"source_content_type":"text/x-python","patch_set":10,"id":"a56b98b5_d60f8d1b","line":397,"in_reply_to":"35c9b414_8e49842e","updated":"2021-02-08 17:06:46.000000000","message":"Done","commit_id":"f9761ceddb85257a6f323d4df94cd782b8626ea2"}]}
