On 02/17/2014 08:55 AM, Ramon Medeiros wrote:
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)?
I don't think it is needed for iface.undedine() but it is true for
iface.destroy(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(a)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):
>