From 0862ce8a1f69416210511f005f858054ca5acd63 Mon Sep 17 00:00:00 2001 From: Wojtek Porczyk Date: Tue, 12 Jun 2018 02:28:58 +0200 Subject: [PATCH] doc: loading graph fixes QubesOS/qubes-issues#1560 --- doc/loading.svg | 3 +++ doc/qubes.rst | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 doc/loading.svg diff --git a/doc/loading.svg b/doc/loading.svg new file mode 100644 index 00000000..b0552d4e --- /dev/null +++ b/doc/loading.svg @@ -0,0 +1,3 @@ + + +
qubes.Qubes
qubes.Qubes
load()
load()
Labels
Pools
Labels<br>Pools
VMs
VMs
.load() cont.
.load() cont.
load_properties(
load_stage=3)
load_properties(<br>load_stage=3)
.domains.add()
.domains.add()
domain-add
domain-add
qubes.vm.QubesVM
qubes.vm.QubesVM
__init__()
__init__()
load_properties(
load_stage=2)
load_properties(<br>load_stage=2)
load_properties(
load_stage=4)
load_properties(<br>load_stage=4)
.fire_event('domain-load')
.fire_event('domain-load')
domain-load
domain-load
default_dispvm
kernelopts
netvm
template
[Not supported by viewer]
anything by default,
if not in load_stage=4
anything by default,<br>if not in load_stage=4
admin.vm.Create
admin.vm.CreateInPool
admin.vm.CreateDisposable
[Not supported by viewer]
app.add_new_vm(cls)
app.add_new_vm(cls)
qubes.vm.QubesVM
qubes.vm.QubesVM
__init__()
__init__()
here the domain is actually removed from the collection
here the domain is actually removed from the collection
domain-init
domain-init
admin.vm.Remove
admin.vm.Remove
del app.domains[vm]
del app.domains[vm]
domain-pre-delete
domain-pre-delete
domain-delete
domain-delete
Current as of v4.0.27 (2b2cdf4)
Not included: storage
Current as of v4.0.27 (2b2cdf4)<br>Not included: storage
all properties are set
or left as default
all properties are set<br>or left as default
everything in app
everything in app
events
events
API
API
Key:
Key:
the domain is removed
from disk
the domain is removed<br>from disk
\ No newline at end of file diff --git a/doc/qubes.rst b/doc/qubes.rst index 955870a8..5de9e78c 100644 --- a/doc/qubes.rst +++ b/doc/qubes.rst @@ -8,10 +8,20 @@ Because all objects in Qubes' world are interconnected, there is no possibility to instantiate them separately. They are all loaded together and contained in the one ``app`` object, an instance of :py:class:`qubes.Qubes` class. +Loading +^^^^^^^ + +The objects may come to existence in two ways: by explicit instantiation or by +loading from XML file. + The loading from XML is done in stages, because Qubes domains are dependent on each other in what can be even a circular dependency. Therefore some properties -(especcialy those that refer to another domains) are loaded later. Refer to -:py:class:`qubes.Qubes` class documentation to get description of every stage. +(especcialy those that refer to another domains) are loaded later. + +.. image:: loading.svg + +Refer to :py:class:`qubes.Qubes` class documentation to get description of every +stage. Properties