mirror of https://github.com/apache/cloudstack.git
for windows vm, use localtime
This commit is contained in:
parent
03cce245cf
commit
5fcaa5a659
|
|
@ -59,10 +59,7 @@ import org.libvirt.DomainInterfaceStats;
|
|||
import org.libvirt.DomainSnapshot;
|
||||
import org.libvirt.LibvirtException;
|
||||
import org.libvirt.NodeInfo;
|
||||
import org.libvirt.StoragePool;
|
||||
import org.libvirt.StoragePoolInfo;
|
||||
import org.libvirt.StorageVol;
|
||||
import org.libvirt.StorageVolInfo;
|
||||
|
||||
|
||||
import com.cloud.agent.api.Answer;
|
||||
import com.cloud.agent.api.AttachIsoCommand;
|
||||
|
|
@ -155,7 +152,6 @@ import com.cloud.agent.api.to.StorageFilerTO;
|
|||
import com.cloud.agent.api.to.VirtualMachineTO;
|
||||
import com.cloud.agent.api.to.VolumeTO;
|
||||
import com.cloud.agent.resource.computing.KVMHABase.NfsStoragePool;
|
||||
import com.cloud.agent.resource.computing.LibvirtStorageVolumeDef.volFormat;
|
||||
import com.cloud.agent.resource.computing.LibvirtVMDef.ConsoleDef;
|
||||
import com.cloud.agent.resource.computing.LibvirtVMDef.DevicesDef;
|
||||
import com.cloud.agent.resource.computing.LibvirtVMDef.DiskDef;
|
||||
|
|
@ -168,12 +164,12 @@ import com.cloud.agent.resource.computing.LibvirtVMDef.InterfaceDef;
|
|||
import com.cloud.agent.resource.computing.LibvirtVMDef.InterfaceDef.hostNicType;
|
||||
import com.cloud.agent.resource.computing.LibvirtVMDef.SerialDef;
|
||||
import com.cloud.agent.resource.computing.LibvirtVMDef.TermPolicy;
|
||||
import com.cloud.agent.resource.computing.LibvirtVMDef.ClockDef;
|
||||
import com.cloud.agent.resource.virtualnetwork.VirtualRoutingResource;
|
||||
import com.cloud.agent.storage.KVMPhysicalDisk;
|
||||
import com.cloud.agent.storage.KVMPhysicalDisk.PhysicalDiskFormat;
|
||||
import com.cloud.agent.storage.KVMStoragePool;
|
||||
import com.cloud.agent.storage.KVMStoragePoolManager;
|
||||
import com.cloud.agent.storage.LibvirtStorageAdaptor;
|
||||
import com.cloud.dc.Vlan;
|
||||
import com.cloud.exception.InternalErrorException;
|
||||
import com.cloud.host.Host.Type;
|
||||
|
|
@ -207,7 +203,7 @@ import com.cloud.vm.DiskProfile;
|
|||
import com.cloud.vm.VirtualMachine;
|
||||
import com.cloud.vm.VirtualMachine.State;
|
||||
import com.cloud.vm.VirtualMachineName;
|
||||
import com.xensource.xenapi.Connection;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -2272,6 +2268,14 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
|
|||
term.setPowerOffPolicy("destroy");
|
||||
term.setRebootPolicy("restart");
|
||||
vm.addComp(term);
|
||||
|
||||
ClockDef clock = new ClockDef();
|
||||
if (vmTO.getOs().startsWith("Windows")) {
|
||||
clock.setClockOffset(ClockDef.ClockOffset.LOCALTIME);
|
||||
clock.setTimer("rtc", "catchup", null);
|
||||
}
|
||||
|
||||
vm.addComp(clock);
|
||||
|
||||
DevicesDef devices = new DevicesDef();
|
||||
devices.setEmulatorPath(_hypervisorPath);
|
||||
|
|
|
|||
|
|
@ -183,6 +183,72 @@ public class LibvirtVMDef {
|
|||
}
|
||||
}
|
||||
|
||||
public static class ClockDef {
|
||||
public enum ClockOffset {
|
||||
UTC("utc"),
|
||||
LOCALTIME("localtime"),
|
||||
TIMEZONE("timezone"),
|
||||
VARIABLE("variable");
|
||||
|
||||
private String _offset;
|
||||
private ClockOffset(String offset) {
|
||||
_offset = offset;
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return _offset;
|
||||
}
|
||||
}
|
||||
private ClockOffset _offset;
|
||||
private String _timerName;
|
||||
private String _tickPolicy;
|
||||
private String _track;
|
||||
|
||||
public ClockDef() {
|
||||
_offset = ClockOffset.UTC;
|
||||
}
|
||||
|
||||
public void setClockOffset(ClockOffset offset) {
|
||||
_offset = offset;
|
||||
}
|
||||
|
||||
public void setTimer(String timerName, String tickPolicy, String track) {
|
||||
_timerName = timerName;
|
||||
_tickPolicy = tickPolicy;
|
||||
_track = track;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder clockBuilder = new StringBuilder();
|
||||
clockBuilder.append("<clock offset='");
|
||||
clockBuilder.append(_offset.toString());
|
||||
clockBuilder.append("'>\n");
|
||||
if (_timerName != null) {
|
||||
clockBuilder.append("<timer name='");
|
||||
clockBuilder.append(_timerName);
|
||||
clockBuilder.append("' ");
|
||||
|
||||
if (_tickPolicy != null) {
|
||||
clockBuilder.append("tickpolicy='");
|
||||
clockBuilder.append(_tickPolicy);
|
||||
clockBuilder.append("' ");
|
||||
}
|
||||
|
||||
if (_track != null) {
|
||||
clockBuilder.append("track='");
|
||||
clockBuilder.append(_track);
|
||||
clockBuilder.append("' ");
|
||||
}
|
||||
|
||||
clockBuilder.append(">\n");
|
||||
clockBuilder.append("</timer>\n");
|
||||
}
|
||||
clockBuilder.append("</clock>\n");
|
||||
return clockBuilder.toString();
|
||||
}
|
||||
}
|
||||
|
||||
public static class DevicesDef {
|
||||
private String _emulator;
|
||||
private final Map<String, List<?>> devices = new HashMap<String, List<?>>();
|
||||
|
|
|
|||
Loading…
Reference in New Issue