containers / bootc

Boot and upgrade via container images
https://containers.github.io/bootc/
Apache License 2.0
770 stars 83 forks source link

Add a RPC API #4

Open cgwalters opened 1 year ago

cgwalters commented 1 year ago

This heavily relates to https://github.com/cgwalters/bootc/issues/2 - but does not strictly depend on it.

My initial take is to add something like bootc upgrade --json which would not do interactive status prints, but write a defined stable JSON output format to stdout (or a specifically targeted fd).

But...it may be more sustainable to have a better protocol; as the issue says, whether that's DBus or Cap'n Proto or varlink, etc.

cgwalters commented 1 year ago

@baude you mentioned this in a chat - can you flesh out (or just link me to) what requirements you're thinking of here? It was in the context of podman desktop right?

I believe that use case is literally just bootc switch quay.io/podman:4.2 etc. right? Is there more requirements? (Can we just pass through tty status or does it actually need a proper API so that a GUI like podman desktop could render download progress?)

cgwalters commented 1 year ago

One of the bigger challenges with things like this in my experience is representing e.g. download progress. There's a lot of subtleties and tension between making it generic enough for future expansion but specific enough to render in a nice way in a GUI.

The rpm-ostree DBus APIs for this are okay-ish but not IMO great.

Quickly looking at e.g. the Docker HTTP API, it doesn't seem to have any byte-level progress for e.g. image fetches?

jmpolom commented 2 weeks ago

I do not think bootc fits the mold of a tool requiring any form of IPC. It isn't a persistent process today and should never be in the future.