use of org.ovirt.engine.core.common.businessentities.qos.CpuQos in project ovirt-engine by oVirt.
the class VdsEventListener method updateSlaPolicies.
@Override
public void updateSlaPolicies(final List<Guid> vmIds, final Guid vdsId) {
if (vmIds.isEmpty()) {
return;
}
ThreadPoolUtil.execute(() -> {
// Get Disks and CpuQos of VMs from the DB
Map<Guid, List<Disk>> diskMap = diskDao.getAllForVms(vmIds);
Map<Guid, CpuQos> cpuQosMap = cpuQosDao.getCpuQosByVmIds(vmIds);
Map<Guid, List<DiskImage>> diskImageMap = new HashMap<>();
Set<Guid> diskProfileIds = new HashSet<>();
for (Guid vmId : vmIds) {
// Filter - only plugged disk images with disk profile remain
List<DiskImage> diskImages = diskMap.get(vmId).stream().filter(disk -> disk.getPlugged() && disk.getDiskStorageType() == DiskStorageType.IMAGE).map(DiskImage.class::cast).filter(disk -> disk.getDiskProfileId() != null).collect(Collectors.toList());
diskImageMap.put(vmId, diskImages);
for (DiskImage img : diskImages) {
diskProfileIds.add(img.getDiskProfileId());
}
}
// Get StorageQos of used disk profiles
Map<Guid, StorageQos> storageQosMap = storageQosDao.getQosByDiskProfileIds(diskProfileIds);
// Call VmSlaPolicyCommand for each VM
for (Guid vmId : vmIds) {
CpuQos cpuQos = cpuQosMap.get(vmId);
VmSlaPolicyParameters params = new VmSlaPolicyParameters(vmId, cpuQos);
for (DiskImage diskImage : diskImageMap.get(vmId)) {
Guid diskProfileId = diskImage.getDiskProfileId();
StorageQos storageQos = storageQosMap.get(diskProfileId);
if (storageQos != null) {
params.getStorageQos().put(diskImage, storageQos);
}
}
if (!params.isEmpty()) {
backend.runInternalAction(ActionType.VmSlaPolicy, params);
}
}
});
}
use of org.ovirt.engine.core.common.businessentities.qos.CpuQos in project ovirt-engine by oVirt.
the class VmSlaPolicyUtils method refreshCpuQosOfRunningVm.
/**
* Refresh CPU QoS of a running VM.
*/
public void refreshCpuQosOfRunningVm(VM vm) {
if (!vm.getStatus().isQualifiedForQosChange()) {
// It only makes sense to try a QoS live change on a running VM.
throw new IllegalArgumentException(String.format("VM %s is not running. Can't perform a live QoS upgrade", vm.getId()));
}
Guid vmId = vm.getId();
List<Guid> vmIds = Arrays.asList(vmId);
CpuQos cpuQos = cpuQosDao.getCpuQosByVmIds(vmIds).get(vmId);
if (cpuQos == null) {
refreshVmsCpuQos(Arrays.asList(vmId), new CpuQos());
} else {
refreshVmsCpuQos(Arrays.asList(vmId), cpuQos);
}
}
use of org.ovirt.engine.core.common.businessentities.qos.CpuQos in project ovirt-engine by oVirt.
the class VmSlaPolicyCommandTest method testCpuQos.
@Test
public void testCpuQos() {
CpuQos cpuQos = new CpuQos();
cpuQos.setCpuLimit(50);
parameters.setCpuQos(cpuQos);
vdsFunction = params -> {
assertEquals(50, params.getCpuLimit().intValue());
return true;
};
assertTrue(command.validate());
command.executeCommand();
assertTrue(command.getReturnValue().getSucceeded());
}
use of org.ovirt.engine.core.common.businessentities.qos.CpuQos in project ovirt-engine by oVirt.
the class VmSlaPolicyCommandTest method testCpuQosUnlimited.
@Test
public void testCpuQosUnlimited() {
CpuQos cpuQos = new CpuQos();
cpuQos.setCpuLimit(null);
parameters.setCpuQos(cpuQos);
vdsFunction = params -> {
assertEquals(100, params.getCpuLimit().intValue());
return true;
};
assertTrue(command.validate());
command.executeCommand();
assertTrue(command.getReturnValue().getSucceeded());
}
use of org.ovirt.engine.core.common.businessentities.qos.CpuQos in project ovirt-engine by oVirt.
the class CpuProfileBaseModel method flush.
@Override
public void flush() {
if (getProfile() == null) {
setProfile(new CpuProfile());
}
CpuProfile cpuProfile = getProfile();
cpuProfile.setName(getName().getEntity());
cpuProfile.setDescription(getDescription().getEntity());
Cluster cluster = getParentListModel().getSelectedItem();
cpuProfile.setClusterId(cluster != null ? cluster.getId() : null);
CpuQos cpuQos = getQos().getSelectedItem();
cpuProfile.setQosId(cpuQos != null && cpuQos.getId() != null && !cpuQos.getId().equals(Guid.Empty) ? cpuQos.getId() : null);
}
Aggregations