[Pkg-xen-devel] Bug#452721: Bug#452721: irt: Bug#452721 notes from explorations

zithro slack at rabbit.lu
Mon Jul 31 18:10:34 BST 2023


On 31 Jul 2023 03:39, Elliott Mitchell wrote:

> Presently I hope to convince the Xen core to allow full Python in domain
> configuration files, but no news on that front so far.  This would mean
> /etc/default/xendomains would need to change to match Python syntax.

There was an answer today on xen-devel: the ability to use scripts in 
domU cfg files has been explicitely removed for various reasons.
This does not prevent you from "source"-ing teh cfg files in your 
script(s) if they are proper Python syntax. Or you could simply 
parse/regex the values you want.
And as Marek suggested in his answer, you can also put any arbitrary 
settings in the comments.

Although ...

> My thinking for adding to domain configuration files would be something
> along these lines:
> 
> init = {
> 	'tool': 'xendomains-ng',
> 	'version': 0,
> 	'order': 9,
> 	'startwait': 60,
> 	'stopaction': 'save',
> }

The problem with adding this to a domU config file is that it could 
cause problems for (live) migrations. The start/stop order is "per 
dom0", and may be different on another one.
Imagine two dom0s, one storing the domain files "locally", while the 
other uses NFS. Only in the second case the domU should wait for the NFS 
server/domain to be available.

To me, the start/stop logic should be in a dom0 config file.

> 'startwait' would tell the script to wait that long before starting
> subsquent domains.

A time-based wait may be useful for when everything goes well, but what 
about when there are problems ?
If you want to be sure a domain is up (ie. ready to serve), you would 
need to peek at the related "service".
For example, to be sure a DNS domU is up, you would have to try a DNS 
request, as a ping or "xl list" would not be enough.
Also, domains in xen/auto are started with a mix of serialization AND 
parallelization, as "xl create" returns once the domain has started (ie. 
in the Xen point of view, not the user's).

> 'stopaction' would allow different actions if the machine was to stop.
> The 3 options which come to mind are 'stop' (shutdown), 'save' (save to
> specified storage location), and 'migrate'.

Then, each time you do NOT want to follow the usual action, you'd have 
to edit -each- domU cfg file ?

> If full Python doesn't become available, this might take the format:
> init = 'tool=xendomains-ng,version=0,order=9,startwait=60,stopaction=save'
> Not needing to parse the string though does make one's life simpler.

Well, it makes -your- life easier, not the maintainers' one ;)

> I'm basically certain writing a new xendomains script in Python is the
> way to go.  Now to get an answer as to whether full Python in domain
> configuration files could be reenabled.

I'm not sure a Python script would solve anything, as (ba)sh variables 
are imported from other files.
(see for example 
https://salsa.debian.org/xen-team/debian-xen/-/blob/master/tools/hotplug/Linux/xendomains.in)

Everything considered, I'm not sure why Xen should provide such 
functionnality.
I think custom scripts can handle all the various use cases, don't you 
think ?
PS: as mentionned by diederik, the "dependency" logic is already handled 
by Qubes since years, and it never made it to Xen (I don't know the 
reasons though).

But I agree the shutdown sequence could be adapted to :
1. first shutdown the domains NOT in xen/auto
2. then shutdown the domains in xen/auto, in reverse order

For fine grained start/stop order, maybe having a dom0 config file 
handling this could be added, like:

     # START/STOP ORDER
     # domains not in these lists will be started after and stopped
     # before the ones here
     start-order=(list of domU names)
     stop-order=(list of domU names)

But then again, this only ensures "domains" start order, not "services 
availability" in said domains.

--
zithro / Cyril



More information about the Pkg-xen-devel mailing list