Unable to upload ISO webui

alpine:~# incus storage volume import os alpine-virt-3.23.0_rc2-x86_64.iso archlinux-2024.08.03-x86_64 --type=iso
alpine:~# incus storage list
+------+--------+-------------+---------+---------+
| NAME | DRIVER | DESCRIPTION | USED BY |  STATE  |
+------+--------+-------------+---------+---------+
| os   | dir    |             | 2       | CREATED |
+------+--------+-------------+---------+---------+
alpine:~# incus storage volume list os
+--------+-----------------------------+-------------+--------------+---------+
|  TYPE  |            NAME             | DESCRIPTION | CONTENT-TYPE | USED BY |
+--------+-----------------------------+-------------+--------------+---------+
| custom | archlinux-2024.08.03-x86_64 |             | iso          | 0       |
+--------+-----------------------------+-------------+--------------+---------+
alpine:~#

The shell works fine, but the web doesn’t.

Can you look in developer mode in the web browser for what API call is being made exactly?

I have another question: when uploading a rootfs image, is it necessary to include the metadata.yaml file?

The ISO upload issue is because of Alpine’s packaging of the Incus UI.

They’re just using a clean export from Github which isn’t how this is supposed to be used. The Incus UI repository isn’t meant for direct consumption, it’s just used for development tracking of a set of change on top of the LXD UI repository.
To actually turn that into a (usually) functional UI, you need to also apply some automatic changes as seen in incus/patches/ui-canonical-renames.sed at daily · zabbly/incus · GitHub

Those generic renames aren’t included in the git repository as that would make rebasing and getting changes from the LXD UI quite a bit more annoying.

But without those renames, you have a UI that sets the wrong HTTP header when uploading an ISO, causing the issue you’re seeing.

For images, it looks like the UI only supports what we call “unified” images.
So that’s images made of a single file which then contains both the metadata and data.

This perfectly solves it, thank you for your patient explanation.