[Kimchi-devel] [PATCH V11 7/7] write the template OS info to vm metadata

shaohef at linux.vnet.ibm.com shaohef at linux.vnet.ibm.com
Mon Apr 28 15:44:28 UTC 2014


From: ShaoHe Feng <shaohef at linux.vnet.ibm.com>

Then kimchi can choose the divice mode depend on these info.

Note, the info is the initial OS when install OS on a blank guest.

OS may change after the install.

So other device should still keep their model info in the vm metadata.

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

diff --git a/src/kimchi/model/vms.py b/src/kimchi/model/vms.py
index be720f3..26ef0e8 100644
--- a/src/kimchi/model/vms.py
+++ b/src/kimchi/model/vms.py
@@ -223,6 +223,8 @@ class VMsModel(object):
             raise OperationFailed("KCHVM0007E", {'name': name,
                                                  'err': e.get_error_message()})
 
+        VMModel.vm_update_os_metadata(VMModel.get_vm(name, self.conn), t.info)
+
         return name
 
     def get_list(self):
@@ -287,6 +289,21 @@ class VMModel(object):
         node = self._build_access_elem(users, groups)
         set_metadata_node(dom, ET.tostring(node))
 
+    @staticmethod
+    def vm_get_os_metadata(dom):
+        os_xml = get_metadata_node(dom, "os") or """<os></os>"""
+        os_elem = ET.fromstring(os_xml)
+        return (os_elem.attrib.get("version"), os_elem.attrib.get("distro"))
+
+    @staticmethod
+    def vm_update_os_metadata(dom, params):
+        distro = params.get("os_distro")
+        version = params.get("os_version")
+        if distro is None:
+            return
+        os_elem = E.os({"distro": distro, "version": version})
+        set_metadata_node(dom, ET.tostring(os_elem))
+
     def _static_vm_update(self, dom, params):
         state = DOM_STATE_MAP[dom.info()[0]]
         old_xml = new_xml = dom.XMLDesc(0)
-- 
1.9.0




More information about the Kimchi-devel mailing list