package org.ovirt.engine.core.bll.scheduling.pending;
import java.util.HashSet;
import java.util.Set;
import org.ovirt.engine.core.bll.scheduling.utils.VmSpecificPendingResourceEqualizer;
import org.ovirt.engine.core.common.businessentities.VDS;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.compat.Guid;
/**
* Represents a VM that is about to start on a host
*/
public class PendingVM extends PendingResource {
public PendingVM(VDS host, VM vm) {
super(host, vm);
}
public PendingVM(Guid host, VM vm) {
super(host, vm);
}
@Override
public boolean equals(Object other) {
return VmSpecificPendingResourceEqualizer.isEqual(this, other);
}
@Override
public int hashCode() {
return VmSpecificPendingResourceEqualizer.calcHashCode(this);
}
public static Set<Guid> collectForHost(PendingResourceManager manager, Guid host) {
Set<Guid> ids = new HashSet<>();
for (PendingVM pending: manager.pendingHostResources(host, PendingVM.class)) {
ids.add(pending.getVm());
}
return ids;
}
public static Guid getScheduledHost(PendingResourceManager manager, VM vm) {
PendingVM template = new PendingVM((Guid)null, vm);
PendingVM pending = manager.getExactPendingResource(template);
return pending == null ? null : pending.getHost();
}
}