package org.ovirt.engine.core.bll; import org.ovirt.engine.core.compat.*; import org.ovirt.engine.core.common.businessentities.*; import org.ovirt.engine.core.common.queries.*; public class GetAllVmSnapshotsByDriveQuery<P extends GetAllVmSnapshotsByDriveParameters> extends QueriesCommandBase<P> { public GetAllVmSnapshotsByDriveQuery(P parameters) { super(parameters); } @Override protected void executeQueryCommand() { Guid tryingImage = Guid.Empty; Guid vmId = getParameters().getId(); String drive = getParameters().getDrive(); DiskImage inactiveDisk = null; DiskImage activeDisk = null; RefObject<DiskImage> tempRefObject = new RefObject<DiskImage>(activeDisk); RefObject<DiskImage> tempRefObject2 = new RefObject<DiskImage>(inactiveDisk); int count = ImagesHandler.getImagesMappedToDrive(vmId, drive, tempRefObject, tempRefObject2); activeDisk = tempRefObject.argvalue; inactiveDisk = tempRefObject2.argvalue; if ((count == 0 || count > 2 || activeDisk == null || (count == 2 && inactiveDisk == null))) { log.warnFormat("Vm {0} images data incorrect", vmId); getQueryReturnValue().setReturnValue(new java.util.ArrayList<DiskImage>()); } else { if (inactiveDisk != null) { tryingImage = activeDisk.getParentId(); } Guid topmostImageGuid = inactiveDisk == null ? activeDisk.getId() : inactiveDisk.getId(); getQueryReturnValue().setReturnValue( ImagesHandler.getAllImageSnapshots(topmostImageGuid, activeDisk.getit_guid())); ((GetAllVmSnapshotsByDriveQueryReturnValue) getQueryReturnValue()).setTryingImage(tryingImage); } } private static LogCompat log = LogFactoryCompat.getLog(GetAllVmSnapshotsByDriveQuery.class); }