[Kimchi-devel] [PATCH] Bug fix #309 - network: Unable to create vlan tagged on Ubuntu

Aline Manera alinefm at linux.vnet.ibm.com
Wed Feb 12 17:35:37 UTC 2014


Even with this patch I am unable to create a vlan tagged bridge on Ubuntu.

The errors I got:

[12/Feb/2014:15:28:34] HTTP Traceback (most recent call last):
   File "/usr/lib/python2.7/dist-packages/cherrypy/_cprequest.py", line 
656, in respond
     response.body = self.handler()
   File "/usr/lib/python2.7/dist-packages/cherrypy/lib/encoding.py", 
line 188, in __call__
     self.body = self.oldhandler(*args, **kwargs)
   File "/usr/lib/python2.7/dist-packages/cherrypy/_cpdispatch.py", line 
34, in __call__
     return self.callable(*self.args, **self.kwargs)
   File "/home/alinefm/kimchi/src/kimchi/control/base.py", line 277, in 
index
     return self.create(parse_request(), *args)
   File "/home/alinefm/kimchi/src/kimchi/control/base.py", line 211, in 
create
     name = create(*args)
   File "/home/alinefm/kimchi/src/kimchi/model/networks.py", line 56, in 
create
     self._set_network_bridge(params)
   File "/home/alinefm/kimchi/src/kimchi/model/networks.py", line 119, 
in _set_network_bridge
     str(params['vlan_id']))
   File "/home/alinefm/kimchi/src/kimchi/model/networks.py", line 147, 
in _create_vlan_tagged_bridge
*vlan_tagged_br = conn.interfaceDefineXML(br_xml)*
   File "/home/alinefm/kimchi/src/kimchi/model/libvirtconnection.py", 
line 65, in wrapper
     ret = f(*args, **kwargs)
TypeError: interfaceDefineXML() takes exactly 3 arguments (2 given)

[12/Feb/2014:15:30:42] HTTP Traceback (most recent call last):
   File "/usr/lib/python2.7/dist-packages/cherrypy/_cprequest.py", line 
656, in respond
     response.body = self.handler()
   File "/usr/lib/python2.7/dist-packages/cherrypy/lib/encoding.py", 
line 188, in __call__
     self.body = self.oldhandler(*args, **kwargs)
   File "/usr/lib/python2.7/dist-packages/cherrypy/_cpdispatch.py", line 
34, in __call__
     return self.callable(*self.args, **self.kwargs)
   File "/home/alinefm/kimchi/src/kimchi/control/base.py", line 277, in 
index
     return self.create(parse_request(), *args)
   File "/home/alinefm/kimchi/src/kimchi/control/base.py", line 211, in 
create
     name = create(*args)
   File "/home/alinefm/kimchi/src/kimchi/model/networks.py", line 56, in 
create
     self._set_network_bridge(params)
   File "/home/alinefm/kimchi/src/kimchi/model/networks.py", line 119, 
in _set_network_bridge
     str(params['vlan_id']))
   File "/home/alinefm/kimchi/src/kimchi/model/networks.py", line 148, 
in _create_vlan_tagged_bridge
*vlan_tagged_br.create()*
   File "/home/alinefm/kimchi/src/kimchi/model/libvirtconnection.py", 
line 65, in wrapper
     ret = f(*args, **kwargs)
TypeError: create() takes exactly 2 arguments (1 given)

They are because, libvirt has not a default value for flags.
We should use:
conn.interfaceDefineXML(br_xml, 0) and vlan_tagged_br.create(0)

Ramon, could you include those fix in this patch?




On 02/11/2014 11:34 AM, Ramon Medeiros wrote:
> Python binding for libvirt does not support conn.changeBegin() and
> conn.commit(). To make the change safe, this procedure was changed to a
> internal framework: RollbackContext.
>
> Signed-off-by: Ramon Medeiros <ramonn at linux.vnet.ibm.com>
> ---
>   src/kimchi/model/networks.py | 22 +++++++++++-----------
>   1 file changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/src/kimchi/model/networks.py b/src/kimchi/model/networks.py
> index b164141..d577154 100644
> --- a/src/kimchi/model/networks.py
> +++ b/src/kimchi/model/networks.py
> @@ -29,7 +29,7 @@ from kimchi import networkxml
>   from kimchi import xmlutils
>   from kimchi.exception import InvalidOperation, InvalidParameter
>   from kimchi.exception import MissingParameter, NotFoundError, OperationFailed
> -
> +from kimchi.rollbackcontext import RollbackContext
>
>   class NetworksModel(object):
>       def __init__(self, **kargs):
> @@ -138,17 +138,17 @@ class NetworksModel(object):
>           br_xml = networkxml.create_vlan_tagged_bridge_xml(br_name, interface,
>                                                             vlan_id)
>           conn = self.conn.get()
> -        conn.changeBegin()
> -        try:
> -            vlan_tagged_br = conn.interfaceDefineXML(br_xml)
> -            vlan_tagged_br.create()
> -        except libvirt.libvirtError as e:
> -            conn.changeRollback()
> -            raise OperationFailed(e.message)
> -        else:
> -            conn.changeCommit()
> -            return br_name
>
> +        with RollbackContext() as rollback:
> +
> +            try:
> +                vlan_tagged_br = conn.interfaceDefineXML(br_xml)
> +                vlan_tagged_br.create()
> +            except libvirt.libvirtError as e:
> +                rollback.prependDefer(vlan_tagged_br.destroy)
> +                raise OperationFailed(e.message)
> +            else:
> +                return br_name
>
>   class NetworkModel(object):
>       def __init__(self, **kargs):

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/kimchi-devel/attachments/20140212/de2f0882/attachment.html>


More information about the Kimchi-devel mailing list