[libvirt-users] libvirt domain configuration xml
Laine Stump
laine at laine.org
Tue Dec 15 21:50:29 UTC 2015
On 12/15/2015 04:36 AM, Andrei Perietanu wrote:
> Tanks for the reply Eric.
> The only reason I'm not going through the API is because there is
> nothing in the API (AFIK), that will allow you to modify the VNC
> settings, i.e. enable/disable, change port number. So I figured, the
> only way to do it is to modify the XML.
> I can't use virsh edit because I need this whole behavior scripted.
> So now if I want to change the VNC settings it looks like I have to
> read the XML, modify it, define it, actually re-define it (maybe I
> have to undefine it first?! ) and that's it - correct?
If you "define" a domain that already exists, the new definition
replaces the existing one, but not until the domain has been powered off
- the next time it is started, the new config takes effect. There is no
need to "undefine" or separately "re-define".
So the solution to your problem is to simply replace the final two lines
of your example code (open() and f.write()) with Eric's suggested line:
vm.defineXML(xml)
That's it.
(BTW, please make your replies inline rather that top-posting. It makes
it much easier to follow the discussion)
>
> Andrei
>
> On Fri, Dec 11, 2015 at 5:25 PM, Eric Blake <eblake at redhat.com
> <mailto:eblake at redhat.com>> wrote:
>
> On 12/11/2015 07:26 AM, Andrei Perietanu wrote:
> > I am trying to change a domain configuration from a python
> script. More
> > specific, I want to edit the VNC settings. You can't do this
> using the
> > libvirt API so you have to edit the domain configuration:
>
> Umm, the libvirt API _is_ how you edit the domain configuration.
>
> >
> > Fo exmple, to disable VNC for a domain 'test1':
> >
> > vmXml = vm.XMLDesc(0)
> > root = ET.fromstring(vmXml)
> > devices = root.find('./devices')
> > graphics = devices.find('graphics')
> > devices.remove(graphics)
> > xml = ET.tostring(root)
> > with open('path_to/test1.xml', 'w') as f:
> > f.write(xml)
>
> Writing to path_to/test1.xml is not necessary (it's merely a
> convenient
> way for you to have a point-in-time snapshot of what the domain XML
> was); what you are really looking for is to write the XML back to
> libvirt, via:
>
> vm.defineXML(xml)
>
> > So the question really is: where is the domain configuration
> stored? Am I
> > editing the write file, or am I missing something?
>
> The official copy is stored in memory, so the only supported way to
> manipulate it is via libvirt API. Libvirt happens to copy its memory
> into files located under /etc/libvirt for persistence reasons, but
> modifying those files behind libvirt's back is not a good idea - in
> fact, those files start with the disclaimer:
> <!--
> WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY
> TO BE
> OVERWRITTEN AND LOST. Changes to this xml configuration should be made
> using:
> virsh edit domain
> or other application using the libvirt API.
> -->
>
> --
> Eric Blake eblake redhat com +1-919-301-3266 <tel:%2B1-919-301-3266>
> Libvirt virtualization library http://libvirt.org
>
>
>
> The information transmitted is intended only for the person or entity
> to which it is addressed and may contain confidential and/or
> privileged material. Any review, retransmission, dissemination or
> other use of or taking of any action in reliance upon this information
> by persons or entities other than the intended recipient is
> prohibited. If you receive this in error please contact the sender and
> delete the material from any computer immediately. It is the policy of
> Klas Limited to disavow the sending of offensive material and should
> you consider that the material contained in the message is offensive
> you should contact the sender immediately and also your I.T. Manager.
>
> Klas Telecom Inc., a Virginia Corporation with offices at 1101
> 30th St. NW, Washington, DC 20007.
>
> Klas Limited (Company Number 163303) trading as Klas Telecom, an Irish
> Limited Liability Company, with its registered office at Fourth Floor,
> One Kilmainham Square, Inchicore Road, Kilmainham, Dublin 8, Ireland.
>
>
>
> _______________________________________________
> libvirt-users mailing list
> libvirt-users at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvirt-users/attachments/20151215/3862528f/attachment.htm>
More information about the libvirt-users
mailing list