[Kimchi-devel] [RFC][PATCH 2/3] VM supports interfaces: update model

shaohef at linux.vnet.ibm.com shaohef at linux.vnet.ibm.com
Wed Jan 15 09:53:40 UTC 2014


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

get/attach/detach interface

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

diff --git a/src/kimchi/model.py b/src/kimchi/model.py
index 2c6d3a1..350244b 100644
--- a/src/kimchi/model.py
+++ b/src/kimchi/model.py
@@ -45,6 +45,7 @@ import uuid
 from cherrypy.process.plugins import BackgroundTask
 from cherrypy.process.plugins import SimplePlugin
 from collections import defaultdict
+from lxml import objectify
 from xml.etree import ElementTree
 
 
@@ -967,6 +968,36 @@ class Model(object):
                     iface.destroy()
                 iface.undefine()
 
+    def vmifaces_get_list(self, vm):
+        dom = self._get_vm(vm)
+        xml = dom.XMLDesc(0)
+        root = objectify.fromstring(xml)
+        macs = [iface.mac.get('address')
+                for iface in root.devices.findall("interface")]
+        return macs
+
+    def vmiface_lookup(self, vm, name):
+        info = {}
+        dom = self._get_vm(vm)
+        xml = dom.XMLDesc(0)
+        root = objectify.fromstring(xml)
+
+        iface = [iface for iface in root.devices.findall("interface")
+                 if iface.mac.get('address') == name]
+        if not iface:
+            raise NotFoundError('iface: "%s"' % name)
+        iface = iface[0]
+
+        info['type'] = iface.attrib['type']
+        info['name'] = info['mac'] = iface.mac.get('address')
+        info['model'] = iface.model.get('type')
+        if info['type'] == 'network':
+            info['network'] = iface.source.get('network')
+        if info['type'] == 'bridge':
+            info['bridge'] = iface.source.get('bridge')
+
+        return info
+
     def add_task(self, target_uri, fn, opaque=None):
         id = self.next_taskid
         self.next_taskid = self.next_taskid + 1
-- 
1.8.4.2




More information about the Kimchi-devel mailing list