diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 1ab63e1ba25f..f8c24c5def5a 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -46,9 +46,6 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; -import com.cloud.hypervisor.kvm.resource.rolling.maintenance.RollingMaintenanceAgentExecutor; -import com.cloud.hypervisor.kvm.resource.rolling.maintenance.RollingMaintenanceExecutor; -import com.cloud.hypervisor.kvm.resource.rolling.maintenance.RollingMaintenanceServiceExecutor; import org.apache.cloudstack.storage.to.PrimaryDataStoreTO; import org.apache.cloudstack.storage.to.TemplateObjectTO; import org.apache.cloudstack.storage.to.VolumeObjectTO; @@ -88,6 +85,7 @@ import com.cloud.agent.api.PingCommand; import com.cloud.agent.api.PingRoutingCommand; import com.cloud.agent.api.PingRoutingWithNwGroupsCommand; +import com.cloud.agent.api.SecurityGroupRulesCmd; import com.cloud.agent.api.SetupGuestNetworkCommand; import com.cloud.agent.api.StartupCommand; import com.cloud.agent.api.StartupRoutingCommand; @@ -110,7 +108,6 @@ import com.cloud.agent.resource.virtualnetwork.VRScripts; import com.cloud.agent.resource.virtualnetwork.VirtualRouterDeployer; import com.cloud.agent.resource.virtualnetwork.VirtualRoutingResource; -import com.cloud.agent.api.SecurityGroupRulesCmd; import com.cloud.dc.Vlan; import com.cloud.exception.InternalErrorException; import com.cloud.host.Host.Type; @@ -133,7 +130,6 @@ 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.RngDef; import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.RngDef.RngBackendModel; import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.SCSIDef; @@ -143,6 +139,9 @@ import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.WatchDogDef; import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.WatchDogDef.WatchDogAction; import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.WatchDogDef.WatchDogModel; +import com.cloud.hypervisor.kvm.resource.rolling.maintenance.RollingMaintenanceAgentExecutor; +import com.cloud.hypervisor.kvm.resource.rolling.maintenance.RollingMaintenanceExecutor; +import com.cloud.hypervisor.kvm.resource.rolling.maintenance.RollingMaintenanceServiceExecutor; import com.cloud.hypervisor.kvm.resource.wrapper.LibvirtRequestWrapper; import com.cloud.hypervisor.kvm.resource.wrapper.LibvirtUtilitiesHelper; import com.cloud.hypervisor.kvm.storage.IscsiStorageCleanupMonitor; @@ -3183,35 +3182,14 @@ public String rebootVM(final Connect conn, final String vmName) throws LibvirtEx String msg = null; try { dm = conn.domainLookupByName(vmName); - // Get XML Dump including the secure information such as VNC password - // By passing 1, or VIR_DOMAIN_XML_SECURE flag - // https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainXMLFlags - String vmDef = dm.getXMLDesc(1); - final LibvirtDomainXMLParser parser = new LibvirtDomainXMLParser(); - parser.parseDomainXML(vmDef); - for (final InterfaceDef nic : parser.getInterfaces()) { - if (nic.getNetType() == GuestNetType.BRIDGE && nic.getBrName().startsWith("cloudVirBr")) { - try { - final int vnetId = Integer.parseInt(nic.getBrName().replaceFirst("cloudVirBr", "")); - final String pifName = getPif(_guestBridgeName); - final String newBrName = "br" + pifName + "-" + vnetId; - vmDef = vmDef.replace("'" + nic.getBrName() + "'", "'" + newBrName + "'"); - s_logger.debug("VM bridge name is changed from " + nic.getBrName() + " to " + newBrName); - } catch (final NumberFormatException e) { - continue; - } - } - } - s_logger.debug(vmDef); - msg = stopVM(conn, vmName, false); - msg = startVM(conn, vmName, vmDef); + // Perform ACPI and signal based reboot + // https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainReboot + // https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainRebootFlagValues + dm.reboot(0x1 | 0x8); return null; } catch (final LibvirtException e) { s_logger.warn("Failed to create vm", e); msg = e.getMessage(); - } catch (final InternalErrorException e) { - s_logger.warn("Failed to create vm", e); - msg = e.getMessage(); } finally { try { if (dm != null) { diff --git a/pom.xml b/pom.xml index c7e8b011320f..7f89d5e17597 100644 --- a/pom.xml +++ b/pom.xml @@ -154,7 +154,7 @@ 20090211 1.2 0.11.0.3 - 0.5.1 + 0.5.2 1.5.0-b01 8.0.19 2.0.4