package org.zstack.kvm; import org.zstack.core.config.GlobalConfig; import org.zstack.core.config.GlobalConfigUpdateExtensionPoint; import org.zstack.header.Component; import org.zstack.header.allocator.HostReservedCapacityExtensionPoint; import org.zstack.header.allocator.ReservedHostCapacity; import org.zstack.utils.SizeUtils; /** */ public class KvmHostReserveExtension implements HostReservedCapacityExtensionPoint, Component { private ReservedHostCapacity reserve = new ReservedHostCapacity(); @Override public String getHypervisorTypeForHostReserveCapacityExtension() { return KVMConstant.KVM_HYPERVISOR_TYPE; } @Override public ReservedHostCapacity getReservedHostCapacity() { return reserve; } @Override public boolean start() { long cpu = SizeUtils.sizeStringToBytes(KVMGlobalConfig.RESERVED_CPU_CAPACITY.value()); long mem = SizeUtils.sizeStringToBytes(KVMGlobalConfig.RESERVED_MEMORY_CAPACITY.value()); reserve.setReservedCpuCapacity(cpu); reserve.setReservedMemoryCapacity(mem); KVMGlobalConfig.RESERVED_CPU_CAPACITY.installUpdateExtension(new GlobalConfigUpdateExtensionPoint() { @Override public void updateGlobalConfig(GlobalConfig oldConfig, GlobalConfig newConfig) { reserve.setReservedCpuCapacity(SizeUtils.sizeStringToBytes(newConfig.value())); } }); KVMGlobalConfig.RESERVED_MEMORY_CAPACITY.installUpdateExtension(new GlobalConfigUpdateExtensionPoint() { @Override public void updateGlobalConfig(GlobalConfig oldConfig, GlobalConfig newConfig) { reserve.setReservedMemoryCapacity(SizeUtils.sizeStringToBytes(newConfig.value())); } }); return true; } @Override public boolean stop() { return true; } }