
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?
You said that i need to change the remove_vg function too. What function that i have to pass the 0 flag? def _remove_vlan_tagged_bridge(self, network): try: bridge = network.bridgeName() except libvirt.libvirtError: pass else: if bridge.startswith('kimchi-'): conn = self.conn.get() iface = conn.interfaceLookupByName(bridge) if iface.isActive(): iface.destroy() iface.undefine() iface.destroy(0) and iface.undefine(0)?
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@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):
-- Ramon Nunes Medeiros Software Engineer - Linux Technology Center Brazil IBM Systems & Technology Group Phone : +55 19 2132 7878 ramonn@br.ibm.com