Updating domains definitions via API

Michal Prívozník mprivozn at redhat.com
Mon May 16 09:10:32 UTC 2022


On 5/14/22 21:23, Darragh Bailey wrote:
> 
> On Fri, 13 May 2022 at 00:17, Darragh Bailey <daragh.bailey at gmail.com
> <mailto:daragh.bailey at gmail.com>> wrote:
> 
>     Hi,
> 
>     On Thu 12 May 2022, 21:34 Laine Stump, <laine at redhat.com
>     <mailto:laine at redhat.com>> wrote:
> 
>         The virDomainDefineXMLFlags API (and also the older/deprecated
>         virDomainDefineXML API) doesn't require that the domain first be
>         undefined (with one notable exception - see below[*]). If you
>         define a
>         domain that already exists with the same name and uuid, then the
>         effect
>         is to "redefine" (or "update" if you prefer) the existing domain
>         of that
>         name. If the domain is currently active, then the changes will take
>         effect the next time the domain is shut down ("Destroy"ed in
>         libvirt API
>         parlance) and re-started.
> 
> 
> Unfortunately trying to call this via ruby-libvirt doesn't appear to
> behave as expected. It appears that if I add an nvram element without a
> loader element to the os block, the following code block will execute
> without issue but also without changing the domain XML:

I think that's kind of expected. If you take a look how libvirt parses
that part of XML:

https://gitlab.com/libvirt/libvirt/-/blob/master/src/conf/domain_conf.c#L18257

if no <loader/> is found then the function exits early without looking
at <nvram/> at all. It kind of makes sense - what good does nvram do
without loader?

Michal



More information about the libvirt-users mailing list