package org.ovirt.engine.core.dao;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.ovirt.engine.core.common.businessentities.storage.Disk;
import org.ovirt.engine.core.common.businessentities.storage.DiskStorageType;
import org.ovirt.engine.core.compat.Guid;
public interface DiskDao extends ReadDao<Disk, Guid>, SearchDao<Disk> {
/**
* Retrieves all disks for the specified virtual machine id.
*
* @param id
* the VM id
* @return the list of disks
*/
List<Disk> getAllForVm(Guid id);
/**
* Retrieves all disks for each vm passed
*
* @param vmIds
* list of VM ids
* @return map storing disks for each VM
*/
Map<Guid, List<Disk>> getAllForVms(Collection<Guid> vmIds);
/**
* Retrieves all disks for the specified virtual machine id.
*
* @param id
* the VM id
* @param onlyPluggedDisks
* whether to returned only the disks plugged to the VM or not
* @return the list of disks
*/
List<Disk> getAllForVm(Guid id, boolean onlyPluggedDisks);
/**
* Retrieves all disks for the specified virtual machine id,
* with optional filtering
*
* @param id
* the VM id
* @param userID
* the ID of the user requesting the information
* @param isFiltered
* Whether the results should be filtered according to the user's permissions
* @return the list of disks
*/
List<Disk> getAllForVm(Guid id, Guid userID, boolean isFiltered);
/**
* Retrieves all disks for the specified virtual machine id, with optional filtering
*
* @param id
* the VM id
* @param onlyPluggedDisks
* whether to returned only the disks plugged to the VM or not
* @param userID
* the ID of the user requesting the information
* @param isFiltered
* Whether the results should be filtered according to the user's permissions
*
* @return the list of disks
*/
List<Disk> getAllForVm(Guid id, boolean onlyPluggedDisks, Guid userID, boolean isFiltered);
/**
* Retrieves all disks for the specified user
* with optional filtering
*
* @param userID
* the ID of the user requesting the information
* @param isFiltered
* Whether the results should be filtered according to the user's permissions
* @return the list of disks
*/
public List<Disk> getAll(Guid userID, boolean isFiltered);
/**
* Retrieves all shared disks for the specified storage pool/virtual machine id,
* @param vmId, if vmId=null retrieve all shared disks in SP
*/
List<Disk> getAllAttachableDisksByPoolId(Guid poolId, Guid vmId , Guid userId, boolean isFiltered);
/**
* Retrieves the boot active disk of the VM with the specified id, null if no boot active disk is attached to this VM.
*
* @param vmId
* the VM id
* @return The active boot disk that is attached to the specified VM, null if no attached active disk is defined as boot.
*/
Disk getVmBootActiveDisk(Guid vmId);
/**
* Returns the Disk with the specified id, with optional filtering.
*
* @param id
* the Disk id
* @param userID
* the ID of the user requesting the information
* @param isFiltered
* Whether the results should be filtered according to the user's permissions
* @return the Disk
*/
Disk get(Guid id, Guid userID, boolean isFiltered);
/**
* Retrieves all disks for the specified virtual machine id, with optional filtering. Only data for the UI basic
* screen is returned
* @param vmId
* the VM id
* @param onlyPluggedDisks
* whether to returned only the disks plugged to the VM or not
* @param userID
* the ID of the user requesting the information
* @param isFiltered
* Whether the results should be filtered according to the user's permissions
* @return the list of disks
*/
List<Disk> getAllForVmPartialData(Guid vmId, boolean onlyPluggedDisks, Guid userID, boolean isFiltered);
/**
* Retrieves all disks filtered by a specified disk storage type.
*
* @param diskStorageType
* the disk storage type
* @param userID
* the ID of the user requesting the information
* @param isFiltered
* Whether the results should be filtered according to the user's permissions
* @return the list of disks
*/
public List<Disk> getAllFromDisksByDiskStorageType(DiskStorageType diskStorageType, Guid userID, boolean isFiltered);
}