mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CLOUDSTACK-8765: fix vm migration failure due to different dev name on KVM
This commit is contained in:
parent
82df5b156b
commit
bb8f7c652e
@ -16,6 +16,7 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
import sys
|
||||
import re
|
||||
from xml.dom.minidom import parse
|
||||
from cloudutils.configFileOps import configFileOps
|
||||
from cloudutils.networkConfig import networkConfig
|
||||
@ -24,21 +25,29 @@ def isOldStyleBridge(brName):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
def isNewStyleBridge(brName):
|
||||
if re.match(r"br(\w+)-(\d+)", brName) == None:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
def getGuestNetworkDevice():
|
||||
netlib = networkConfig()
|
||||
cfo = configFileOps("/etc/cloudstack/agent/agent.properties")
|
||||
guestDev = cfo.getEntry("guest.network.device")
|
||||
enslavedDev = netlib.getEnslavedDev(guestDev, 1)
|
||||
return enslavedDev
|
||||
return enslavedDev.split(".")[0]
|
||||
def handleMigrateBegin():
|
||||
try:
|
||||
domain = parse(sys.stdin)
|
||||
for interface in domain.getElementsByTagName("interface"):
|
||||
source = interface.getElementsByTagName("source")[0]
|
||||
bridge = source.getAttribute("bridge")
|
||||
if not isOldStyleBridge(bridge):
|
||||
continue
|
||||
if isOldStyleBridge(bridge):
|
||||
vlanId = bridge.replace("cloudVirBr","")
|
||||
elif isNewStyleBridge(bridge):
|
||||
vlanId = re.sub(r"br(\w+)-","",bridge)
|
||||
else:
|
||||
continue
|
||||
phyDev = getGuestNetworkDevice()
|
||||
newBrName="br" + phyDev + "-" + vlanId
|
||||
source.setAttribute("bridge", newBrName)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user