On 04/23/2014 12:50 AM, Aline Manera wrote:
On 04/21/2014 03:22 AM, shaohef@linux.vnet.ibm.com wrote:
From: ShaoHe Feng <shaohef@linux.vnet.ibm.com>

define domain just edit the persistent xml.
So we should get user and group from persistent xml instead of live xml
when domain is living.

Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com>
Signed-off-by: Royce Lv <lvroyce@linux.vnet.ibm.com>
---
 src/kimchi/model/vms.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/kimchi/model/vms.py b/src/kimchi/model/vms.py
index 90e9537..2b9bf56 100644
--- a/src/kimchi/model/vms.py
+++ b/src/kimchi/model/vms.py
@@ -258,9 +258,11 @@ class VMModel(object):

         old_xml = new_xml = dom.XMLDesc(0)

+        meta_xml = (dom.XMLDesc(libvirt.VIR_DOMAIN_XML_INACTIVE)
+                    if dom.isPersistent() else old_xml)

From libvirt doc (http://libvirt.org/html/libvirt-libvirt.html#virDomainGetXMLDesc):

"If @flags includes VIR_DOMAIN_XML_INACTIVE, then the XML represents the configuration that will be
used on the next boot of a persistent domain; otherwise, the configuration represents the currently running domain"

So you don't need to add the 'if' statement there (if dom.isPersistent())

And call direclty:

meta_xml = (dom.XMLDesc(libvirt.VIR_DOMAIN_XML_INACTIVE)
Actually libvirt support to create a dom without define it.

some other tools may keep the vm configure by itself,  and just let libvirt create it.

So no configure xml and dom.XMLDesc(libvirt.VIR_DOMAIN_XML_INACTIVE)  will raise an error.


         metadata_xpath = "/domain/metadata/kimchi/access/%s"
-        users = xpath_get_text(old_xml, metadata_xpath % "user")
-        groups = xpath_get_text(old_xml, metadata_xpath % "group")
+        users = xpath_get_text(meta_xml, metadata_xpath % "user")
+        groups = xpath_get_text(meta_xml, metadata_xpath % "group")

         for key, val in params.items():
             if key == 'users':



-- 
Thanks and best regards!

Sheldon Feng(冯少合)<shaohef@linux.vnet.ibm.com>
IBM Linux Technology Center