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

Aline Manera alinefm at linux.vnet.ibm.com
Fri Jan 17 17:38:09 UTC 2014


On 01/15/2014 07:53 AM, shaohef at linux.vnet.ibm.com wrote:
> From: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
>
> get/attach/detach interface

List all network interfaces attached to a VM.

>
> 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):

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




More information about the Kimchi-devel mailing list