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