Hello Marius,
Marius Vollmer [2017-02-10 10:31 +0200]:
Would be nice at some point, with an inotify watch. My gut feeling was that this was a version 2 thing, as we don't do this right now either.
We do, actually. If you change /var/lib/cockpit/machines.json with vi, say, this has immediate effect on the dashboard. The magic is provided by cockpit.file(...).watch():
http://cockpit-project.org/guide/latest/cockpit-file.html
Thanks for pointing out. So v1 then :-)
We have equivalent magic for watching directories, but there is no nice JavaScript API for that yet, I think. (The "fslist1" channel payload, documented in .../cockpit/doc/protocol.md.)
I'm moving the whole reading/writing logic from JS into the bridge behind a D-Bus interface (as per Stef's recommendation), so that the handling/watching/merging of the entire machines/ directory does not need to happen on the client side. So my thought was to add a GFileMonitor to that in the bridge, and send a D-Bus signal to the client on any change, then the frontend can get the Machines property again.
We don't seem to use a lot of D-Bus signals in cockpit, but protocol.md documents them and e. g. pkg/networkmanager/interfaces.js subscribes to one, so I figure that works in general?
If the user now adds or removes such a machine or changes the color for it, where does Cockpit store this? In 10-foo.json or in 99-webui.json?
Hmm, good question. My original intent was to change the file that defines the host entry, i. e. 10-foo.json in this example. This would look less confusing, but it might cause conflicts if 10-foo.json is being by puppet or similar which would then stomp over the config again.
However, the same is true for pretty well every other setting that cockpit (indirectly) can make, such as hostname or time zone.
Yeah, but that's a bug, not a feature. :-) Ideally, we would like to prevent people from running into conflicts with other management tools, see
https://trello.com/c/lPweIUlQ/325-spike-markers-for-config-management-tools
OK, fair enough, but for now I'd treat that as an user bug (trying to simultaneously manage a machine with a config management tool and interactively) :-) Anyway, this should be moot with the following.
I would write to 99-webui.json only.
OK, works for me.
Thanks for your input!
Martin