From 86ee41788047f07bc4da8caa105ccac8a7053bba Mon Sep 17 00:00:00 2001 From: gord_chen Date: Wed, 11 Nov 2020 06:40:37 +0000 Subject: [PATCH] [vmtopology]: Fix no attribute 'host_ifaces' issue for start/stop vm In the PR2446, it already removed to get host_ifaces from __init__ method. For `create_bridge` method, the host_ifaces is not necessary can use the ovs argument `--may-exist` to check the bridge existed case For `destroy_bridge` method, it can use local varilabe to record the host_ifaces, And can use the `--if-exists` argument to checkt bridge existed case Signed-off-by: Gord Chen --- ansible/roles/vm_set/library/vm_topology.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/ansible/roles/vm_set/library/vm_topology.py b/ansible/roles/vm_set/library/vm_topology.py index 5b744659f33..cca12fe4362 100644 --- a/ansible/roles/vm_set/library/vm_topology.py +++ b/ansible/roles/vm_set/library/vm_topology.py @@ -239,8 +239,7 @@ def create_bridges(self): return def create_ovs_bridge(self, bridge_name, mtu): - if bridge_name not in self.host_ifaces: - VMTopology.cmd('ovs-vsctl add-br %s' % bridge_name) + VMTopology.cmd('ovs-vsctl --may-exist add-br %s' % bridge_name) if mtu != DEFAULT_MTU: VMTopology.cmd('ifconfig %s mtu %d' % (bridge_name, mtu)) @@ -250,17 +249,16 @@ def create_ovs_bridge(self, bridge_name, mtu): return def destroy_bridges(self): + host_ifaces = VMTopology.ifconfig('ifconfig -a') for vm in self.vm_names: - for ifname in self.host_ifaces: + for ifname in host_ifaces: if re.compile(OVS_FP_BRIDGE_REGEX % vm).match(ifname): self.destroy_ovs_bridge(ifname) return def destroy_ovs_bridge(self, bridge_name): - if bridge_name in self.host_ifaces: - VMTopology.cmd('ifconfig %s down' % bridge_name) - VMTopology.cmd('ovs-vsctl del-br %s' % bridge_name) + VMTopology.cmd('ovs-vsctl --if-exists del-br %s' % bridge_name) return