
On 01/15/2014 07:53 AM, shaohef@linux.vnet.ibm.com wrote:
From: ShaoHe Feng <shaohef@linux.vnet.ibm.com>
get/attach/detach interface
List all network interfaces attached to a VM.
Signed-off-by: ShaoHe Feng <shaohef@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):
It will be "mac" instead "name", right?
+ 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