How could I filter list to only contain system containers, not to contain oci containers?
type=‘containers’ list oci and system containers
image.type=oci would list oci containers only but there is no image.type!=oci
Are there any other operators than = in the filters?
The API supports != but the CLI indeed doesn’t.
image.type=squashfs will most likely work though.
It’s possible to have system containers that don’t have any image.type though.
Example: if you launch and stop a container, publish an image from it, and then launch a new container from that published image:
$ incus launch cloud-mon zzz
Launching zzz
$ incus config show zzz | grep 'image[.]'
image.architecture: amd64
image.description: Cloud mon (20260524_17:39)
image.name: ubuntu-noble-amd64-cloud-20260513_07:42
image.os: cloud-mon
image.release: main
image.serial: "20260524_17:39"
image.variant: default
$ incus list image.type=squashfs zzz
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+
$
Filtering on empty attributes isn’t an option either:
$ incus list image.type=""
Error: Invalid filter: clause has no value
$ incus list oci.cwd=""
Error: Invalid filter: clause has no value
$
Yeah. Best would be to extend the CLI to allow != as the API does support it.
stgraber@orilla-d13:~ (incus:s-shf-cluster/stgraber)$ incus query '/1.0/instances?project=stgraber&filter=expanded_config.image.type+ne+oci'
[
"/1.0/instances/homeassistant01?project=stgraber",
"/1.0/instances/iot-eg4-proxy?project=stgraber",
"/1.0/instances/mosquitto01?project=stgraber",
"/1.0/instances/plex01?project=stgraber",
"/1.0/instances/rtsp01?project=stgraber"
]