package org.ovirt.engine.core.dao; import java.util.List; import org.ovirt.engine.core.common.businessentities.ActionGroup; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; import org.ovirt.engine.core.compat.Guid; /** * {@code StoragePoolDao} defines a type for performing CRUD operations on instances of {@link StoragePool}. */ public interface StoragePoolDao extends GenericDao<StoragePool, Guid>, StatusAwareDao<Guid, StoragePoolStatus>, SearchDao<StoragePool> { /** * Increase master_domain_version of storage pool in DB and return a new value * @param id * The id of storage pool * @return The new value of master domain version */ int increaseStoragePoolMasterVersion(Guid id); /** * Retrieves the storage pool with the given ID, with optional filtering * @param ID * The ID of the storage pool * @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 storage pool */ StoragePool get(Guid ID, Guid userID, boolean isFiltered); /** * Retrieves the storage pool with the given name. * * @param name * the storage pool name (case-sensitive get) * @return the storage pool */ StoragePool getByName(String name); /** * Retrieves the storage pools with the given name. * * @param name * the storage pool name * @param isCaseSensitive * whether to do case-sensitive get or not * @return the storage pool */ List<StoragePool> getByName(String name, boolean isCaseSensitive); /** * Retrieves the storage pool for the specified VDS. * * @param vds * the VDS * @return the storage pool */ StoragePool getForVds(Guid vds); /** * Retrieves the storage pool for the specified VDS group. * * @param cluster * the VDS group * @return the storage pool */ StoragePool getForCluster(Guid cluster); /** * @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 storage pool */ List<StoragePool> getAll(Guid userID, boolean isFiltered); /** * @param status * the status of the wanted storage pools * @return The list of storage pools with the given status */ List<StoragePool> getAllByStatus(StoragePoolStatus status); /** * Retrieves all storage pools for the given storage domain. * * @param storageDomain * the storage domain * @return the list of storage pools */ List<StoragePool> getAllForStorageDomain(Guid storageDomain); /** * The following method should update only part of storage pool. It will update only name, description * and compatibility version fields */ void updatePartial(StoragePool pool); /** * Retrieves data centers containing clusters with permissions to perform the given action. * @return list of data centers */ List<StoragePool> getDataCentersWithPermittedActionOnClusters(Guid userId, ActionGroup actionGroup, boolean supportsVirtService, boolean supportsGlusterService); /** * Retrieves data centers with at least one cluster with virt service specified * * @return list of data centers */ List<StoragePool> getDataCentersByClusterService(boolean supportsVirtService, boolean supportsGlusterService); /** * Retrieves the IDs of all data centers to which an external network has been imported. * * @param externalId * the external network's external ID. * @return the list of data center IDs. */ List<Guid> getDcIdByExternalNetworkId(String externalId); }