package org.ovirt.engine.core.bll.memory.sdfilters;
import java.util.List;
import java.util.function.Predicate;
import org.ovirt.engine.core.bll.memory.MemoryStorageHandler;
import org.ovirt.engine.core.bll.validator.storage.StorageDomainValidator;
import org.ovirt.engine.core.common.businessentities.StorageDomain;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
public class StorageDomainSpaceRequirementsFilter implements Predicate<StorageDomain> {
private MemoryStorageHandler memoryStorageHandler;
private List<DiskImage> memoryDisks;
public StorageDomainSpaceRequirementsFilter(MemoryStorageHandler memoryStorageHandler, List<DiskImage> memoryDisks) {
this.memoryStorageHandler = memoryStorageHandler;
this.memoryDisks = memoryDisks;
}
@Override
public boolean test(StorageDomain storageDomain) {
memoryStorageHandler.updateDisksStorage(storageDomain, memoryDisks);
StorageDomainValidator storageDomainValidator = getStorageDomainValidator(storageDomain);
return storageDomainValidator.isDomainWithinThresholds().isValid() &&
storageDomainValidator.hasSpaceForClonedDisks(memoryDisks).isValid();
}
protected StorageDomainValidator getStorageDomainValidator(StorageDomain storageDomain) {
return new StorageDomainValidator(storageDomain);
}
}