
On 04/24/2014 02:19 PM, shaohef@linux.vnet.ibm.com wrote:
From: ShaoHe Feng <shaohef@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@linux.vnet.ibm.com> Signed-off-by: Royce Lv <lvroyce@linux.vnet.ibm.com> --- src/kimchi/model/vms.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
diff --git a/src/kimchi/model/vms.py b/src/kimchi/model/vms.py index 7077900..42a9c97 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_updata_os_metadata(VMModel.get_vm(name, self.conn), t.info) + return name
def get_list(self): @@ -287,6 +289,22 @@ class VMModel(object): xml = self._get_metadata_node(users, groups) set_vm_metadata_element(dom, ET.tostring(xml))
+ @staticmethod + def vm_get_os_metadata(dom): + os_xml = (get_vm_metadata_element(dom, "OS") or + """<OS></OS>""") + OS = ET.fromstring(os_xml) + return (OS.attrib.get("version"), OS.attrib.get("distro")) + + @staticmethod + def vm_updata_os_metadata(dom, params): + distro = params.get("os_distro") + version = params.get("os_version") + if distro is None: + return + OS = E.OS({"distro": distro, "version": version})
+ set_vm_metadata_element(dom, ET.tostring(OS))
This will add the <os> element and remove all other metadata elements. While using setMetadata() you need to always provide the whole metadata xml
+ def _static_vm_update(self, dom, params): state = DOM_STATE_MAP[dom.info()[0]] old_xml = new_xml = dom.XMLDesc(0)