From 86976fb298bb05b7a5380573e292ec9687169228 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Fri, 8 Nov 2013 14:36:48 +0100 Subject: [PATCH] CLOUDSTACK-5076: fix wrong bridge name in vm domain xml desc after upgrade from 4.0 or before to 4.2 --- .../kvm/resource/LibvirtComputingResource.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index b1de8275105..182cb221f75 100755 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -205,6 +205,7 @@ import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.GuestDef; import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.GuestResourceDef; import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InputDef; import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef; +import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef.guestNetType; import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef.hostNicType; import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.SerialDef; import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.TermPolicy; @@ -4385,6 +4386,21 @@ ServerResource { try { dm = conn.domainLookupByName(vmName); String vmDef = dm.getXMLDesc(0); + LibvirtDomainXMLParser parser = new LibvirtDomainXMLParser(); + parser.parseDomainXML(vmDef); + for (InterfaceDef nic :parser.getInterfaces()) { + if ((nic.getNetType() == guestNetType.BRIDGE) && (nic.getBrName().startsWith("cloudVirBr"))) { + try { + int vnetId = Integer.parseInt(nic.getBrName().replaceFirst("cloudVirBr", "")); + String pifName = getPif(_guestBridgeName); + String newBrName = "br" + pifName + "-"+ vnetId; + vmDef = vmDef.replaceAll("'" + nic.getBrName() + "'", "'" + newBrName + "'"); + s_logger.debug("VM bridge name is changed from " + nic.getBrName() + " to " + newBrName); + } catch (NumberFormatException e) { + continue; + } + } + } s_logger.debug(vmDef); msg = stopVM(conn, vmName); msg = startVM(conn, vmName, vmDef);