'Clean up destination node after a failed live migration.'

def rollback_live_migration_at_destination(self, context, instance, network_info, block_device_info, destroy_disks=True, migrate_data=None):

    try:
        self.destroy(context, instance, network_info, block_device_info, destroy_disks)
    finally:
        is_shared_instance_path = True
        if migrate_data:
            is_shared_instance_path = migrate_data.is_shared_instance_path
            if (migrate_data.obj_attr_is_set('serial_listen_ports') and migrate_data.serial_listen_ports):
                for port in migrate_data.serial_listen_ports:
                    serial_console.release_port(host=migrate_data.serial_listen_addr, port=port)
        if (not is_shared_instance_path):
            instance_dir = libvirt_utils.get_instance_path_at_destination(instance, migrate_data)
            if os.path.exists(instance_dir):
                shutil.rmtree(instance_dir)
