Reported by joanna on 2 Jun 2014 12:46 UTC
In principle it will be possible to start an AppVM in "disposable" mode - which means changes to its private image (in addition to root image as in normal AppVM) will be discarded after VM shutdown. Technically any AppVM can be used for that, but practically it makes sense to have dedicated "DispVM template" AppVMs (as currently fedora-xx-dvm).
More discussion here:
qubes/storage: allow snapshots of snapshots
It may make sense to create 'snapshot' volume out of already 'snapshot',
not only 'origin'. In pracice it will exactly the same as 'snapshot
connected directly to 'origin'.
qubes/vm: Implement Disposable VM
Implement DispVM as a VM based on AppVM.
@woju where should be a code to make use of the DispVM? It would:
IOW equivalent of /usr/lib/qubes/qfile-daemon-dvm tool.
The main usage would be when someone call an RPC service with $dispvm:sth target, but sometimes it is also useful to start new DispVM manually (from dom0 menu for example).
Should it be new qvm-start-dispvm tool? Option to some existing one (qvm-run?)? Function somewhere in the core (where?), connected to existing or a new tool?
Some function in core, preferably a method of AppVM class
(get_dispvm()?). And CLI tool also. If you have to run a service there,
that would probably be qvm-run.
pozdrawiam / best regards .-.
Wojtek Porczyk .-^' '^-.
Invisible Things Lab |'-.-^-.-'|
| | | |
I do not fear computers, | '-.-' |
I fear lack of them. '-._ : ,-'
-- Isaac Asimov `^-^-_>
So vm.get_dispvm() would return DispVM based on this VM? Already running?
Generally I'm not so sure whether it should be in any *VM class, as it create new VM instance. And even worse - may need to reload qubes.xml to cleanup it later. Slightly more detailed content of this function:
qubes/vm/qubesvm: return self from methods modifying state
This is helpful when writing oneliners.
qubes/vm/qubesvm: allow looking up by UUID
Also, allow lookup using VM from other app.
qubes/vm/dispvm: Add methods for creating and destroying
Untrack #866 (completed)