)]}'
{"nova/virt/fake.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f19be78939792c6e5b060e5a2eecbc220e33856c","unresolved":false,"context_lines":[{"line_number":694,"context_line":"        count \u003d 0"},{"line_number":695,"context_line":"        while self._migrating and count \u003c 50:"},{"line_number":696,"context_line":"            time.sleep(0.1)"},{"line_number":697,"context_line":"            count \u003d count + 1"},{"line_number":698,"context_line":""},{"line_number":699,"context_line":"        if self._abort_migration:"},{"line_number":700,"context_line":"            recover_method(context, instance, dest, migrate_data,"}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_ff60c5a7","line":697,"updated":"2018-03-12 15:25:01.000000000","message":"OK, this means that the migration will finish automatically in 5 seconds but still can be aborted during that 5 seconds.","commit_id":"f96cf7604b1daab4c45c841874fbde9b9a209e38"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f19be78939792c6e5b060e5a2eecbc220e33856c","unresolved":false,"context_lines":[{"line_number":705,"context_line":""},{"line_number":706,"context_line":"    def live_migration_force_complete(self, instance):"},{"line_number":707,"context_line":"        self._migrating \u003d False"},{"line_number":708,"context_line":"        if instance.uuid in self.instances:"},{"line_number":709,"context_line":"            del self.instances[instance.uuid]"},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"    def live_migration_abort(self, instance):"},{"line_number":712,"context_line":"        self._abort_migration \u003d True"}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_9ff429d1","line":709,"range":{"start_line":708,"start_character":1,"end_line":709,"end_character":45},"updated":"2018-03-12 15:25:01.000000000","message":"For me it would be OK to fail in the driver if the caller tries to force_complete a migration that is not even running. But I guess that is already check in some higher level component so it is also OK as is.","commit_id":"f96cf7604b1daab4c45c841874fbde9b9a209e38"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3868ed04992c76d44621039b03c442e40e9d3a52","unresolved":false,"context_lines":[{"line_number":711,"context_line":"    def live_migration_abort(self, instance):"},{"line_number":712,"context_line":"        self._abort_migration \u003d True"},{"line_number":713,"context_line":"        self._migrating \u003d False"},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"    def post_live_migration(self, context, instance, block_device_info,"},{"line_number":716,"context_line":"                            migrate_data\u003dNone):"},{"line_number":717,"context_line":"        if instance.uuid in self.instances:"},{"line_number":718,"context_line":"            del self.instances[instance.uuid]"}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_1a91eb47","line":718,"range":{"start_line":714,"start_character":0,"end_line":718,"end_character":45},"updated":"2018-03-13 11:19:39.000000000","message":"This is dead code, right?","commit_id":"f96cf7604b1daab4c45c841874fbde9b9a209e38"}]}
