@Override public void updateCapacityBytes(long id, long capacityBytes) { StoragePoolVO pool = createForUpdate(id); pool.setCapacityBytes(capacityBytes); update(id, pool); }
@Override public long countPoolsByStatus(StoragePoolStatus... statuses) { SearchCriteria<Long> sc = StatusCountSearch.create(); sc.setParameters("status", (Object[])statuses); List<Long> rs = customSearchIncludingRemoved(sc, null); if (rs.size() == 0) { return 0; } return rs.get(0); }
@Override public List<StoragePoolVO> findLocalStoragePoolsByTags(long dcId, long podId, Long clusterId, String[] tags) { List<StoragePoolVO> storagePools = null; if (tags == null || tags.length == 0) { storagePools = listBy(dcId, podId, clusterId, ScopeType.HOST); } else { String sqlValues = getSqlValuesFromStorageTags(tags); storagePools = findPoolsByDetailsOrTagsInternal(dcId, podId, clusterId, ScopeType.HOST, sqlValues, ValueType.TAGS, tags.length); } return storagePools; }
@DB @Override public List<StoragePoolVO> findPoolsByDetails(long dcId, long podId, Long clusterId, Map<String, String> details, ScopeType scope) { String sqlValues = getSqlValuesFromDetails(details); return findPoolsByDetailsOrTagsInternal(dcId, podId, clusterId, scope, sqlValues, ValueType.DETAILS, details.size()); }
@Override public List<StoragePoolVO> findZoneWideStoragePoolsByTags(long dcId, String[] tags) { if (tags == null || tags.length == 0) { QueryBuilder<StoragePoolVO> sc = QueryBuilder.create(StoragePoolVO.class); sc.and(sc.entity().getDataCenterId(), Op.EQ, dcId); sc.and(sc.entity().getStatus(), Op.EQ, Status.Up); sc.and(sc.entity().getScope(), Op.EQ, ScopeType.ZONE); return sc.list(); } else { String sqlValues = getSqlValuesFromStorageTags(tags); String sql = getSqlPreparedStatement(ZoneWideTagsSqlPrefix, ZoneWideTagsSqlSuffix, sqlValues, null); return searchStoragePoolsPreparedStatement(sql, dcId, null, null, ScopeType.ZONE, tags.length); } }
@Override public List<StoragePoolVO> findIfDuplicatePoolsExistByUUID(String uuid) { SearchCriteria<StoragePoolVO> sc = AllFieldSearch.create(); sc.setParameters("uuid", uuid); return listBy(sc); }
/** * Internal helper method to retrieve storage pools by given details or storage tags. * @param dcId data center id * @param podId pod id * @param clusterId cluster id * @param scope score * @param sqlValues sql string containing details or storage tags values required to query * @param valuesType enumerate to indicate if values are related to details or storage tags * @param valuesLength values length * @return list of storage pools matching conditions */ protected List<StoragePoolVO> findPoolsByDetailsOrTagsInternal(long dcId, long podId, Long clusterId, ScopeType scope, String sqlValues, ValueType valuesType, int valuesLength) { String sqlPrefix = valuesType.equals(ValueType.DETAILS) ? DetailsSqlPrefix : TagsSqlPrefix; String sqlSuffix = valuesType.equals(ValueType.DETAILS) ? DetailsSqlSuffix : TagsSqlSuffix; String sql = getSqlPreparedStatement(sqlPrefix, sqlSuffix, sqlValues, clusterId); return searchStoragePoolsPreparedStatement(sql, dcId, podId, clusterId, scope, valuesLength); }
@Override public List<StoragePoolVO> findLocalStoragePoolsByHostAndTags(long hostId, String[] tags) { SearchBuilder<StoragePoolVO> hostSearch = createSearchBuilder(); SearchBuilder<StoragePoolHostVO> hostPoolSearch = _hostDao.createSearchBuilder(); SearchBuilder<StoragePoolTagVO> tagPoolSearch = _tagsDao.createSearchBuilder(); ; // Search for pools on the host hostPoolSearch.and("hostId", hostPoolSearch.entity().getHostId(), Op.EQ); // Set criteria for pools hostSearch.and("scope", hostSearch.entity().getScope(), Op.EQ); hostSearch.and("removed", hostSearch.entity().getRemoved(), Op.NULL); hostSearch.and("status", hostSearch.entity().getStatus(), Op.EQ); hostSearch.join("hostJoin", hostPoolSearch, hostSearch.entity().getId(), hostPoolSearch.entity().getPoolId(), JoinBuilder.JoinType.INNER); if (!(tags == null || tags.length == 0)) { tagPoolSearch.and("tag", tagPoolSearch.entity().getTag(), Op.EQ); hostSearch.join("tagJoin", tagPoolSearch, hostSearch.entity().getId(), tagPoolSearch.entity().getPoolId(), JoinBuilder.JoinType.INNER); } SearchCriteria<StoragePoolVO> sc = hostSearch.create(); sc.setJoinParameters("hostJoin", "hostId", hostId); sc.setParameters("scope", ScopeType.HOST.toString()); sc.setParameters("status", Status.Up.toString()); if (!(tags == null || tags.length == 0)) { for (String tag : tags) { sc.setJoinParameters("tagJoin", "tag", tag); } } return listBy(sc); }
@Override public StoragePoolVO findPoolByUUID(String uuid) { SearchCriteria<StoragePoolVO> sc = AllFieldSearch.create(); sc.setParameters("uuid", uuid); return findOneIncludingRemovedBy(sc); }
@Override public StoragePoolVO findPoolByHostPath(long datacenterId, Long podId, String host, String path, String uuid) { SearchCriteria<StoragePoolVO> sc = AllFieldSearch.create(); sc.setParameters("hostAddress", host); if (path != null) { sc.setParameters("path", path); } sc.setParameters("datacenterId", datacenterId); sc.setParameters("podId", podId); sc.setParameters("uuid", uuid); return findOneBy(sc); }
public PrimaryDataStoreDaoImpl() { AllFieldSearch = createSearchBuilder(); AllFieldSearch.and("name", AllFieldSearch.entity().getName(), SearchCriteria.Op.EQ); AllFieldSearch.and("uuid", AllFieldSearch.entity().getUuid(), SearchCriteria.Op.EQ); AllFieldSearch.done(); DcPodSearch = createSearchBuilder(); DcPodSearch.and("datacenterId", DcPodSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ); DcPodSearch.and("status", DcPodSearch.entity().getStatus(), SearchCriteria.Op.EQ); DcPodSearch.done(); DcPodAnyClusterSearch = createSearchBuilder(); DcPodAnyClusterSearch.and("datacenterId", DcPodAnyClusterSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ); DcPodAnyClusterSearch.and("status", DcPodAnyClusterSearch.entity().getStatus(), SearchCriteria.Op.EQ); DeleteLvmSearch = createSearchBuilder(); DeleteLvmSearch.and("ids", DeleteLvmSearch.entity().getId(), SearchCriteria.Op.IN); DeleteLvmSearch.and().op("LVM", DeleteLvmSearch.entity().getPoolType(), SearchCriteria.Op.EQ); StatusCountSearch = createSearchBuilder(Long.class); StatusCountSearch.and("status", StatusCountSearch.entity().getStatus(), SearchCriteria.Op.IN); StatusCountSearch.select(null, Func.COUNT, null); StatusCountSearch.done(); DcLocalStorageSearch = createSearchBuilder(); DcLocalStorageSearch.and("datacenterId", DcLocalStorageSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ); DcLocalStorageSearch.and("path", DcLocalStorageSearch.entity().getPath(), SearchCriteria.Op.EQ);
@Override public List<StoragePoolVO> listByStatus(StoragePoolStatus status) { SearchCriteria<StoragePoolVO> sc = AllFieldSearch.create(); sc.setParameters("status", status); return listBy(sc); }
public StoragePoolVO listById(Integer id) { SearchCriteria<StoragePoolVO> sc = AllFieldSearch.create(); sc.setParameters("id", id); return findOneIncludingRemovedBy(sc); }
@Override public List<StoragePoolVO> findPoolsByTags(long dcId, long podId, Long clusterId, String[] tags) { List<StoragePoolVO> storagePools = null; if (tags == null || tags.length == 0) { storagePools = listBy(dcId, podId, clusterId, ScopeType.CLUSTER); } else { String sqlValues = getSqlValuesFromStorageTags(tags); storagePools = findPoolsByDetailsOrTagsInternal(dcId, podId, clusterId, ScopeType.CLUSTER, sqlValues, ValueType.TAGS, tags.length); } return storagePools; }
@Override public List<StoragePoolVO> findPoolsByProvider(String provider) { SearchCriteria<StoragePoolVO> sc = AllFieldSearch.create(); sc.setParameters("storage_provider_name", provider); return listBy(sc); }
@Override public void updateCapacityIops(long id, long capacityIops) { StoragePoolVO pool = createForUpdate(id); pool.setCapacityIops(capacityIops); update(id, pool); }
@Override public List<StoragePoolVO> listByDataCenterId(long datacenterId) { SearchCriteria<StoragePoolVO> sc = AllFieldSearch.create(); sc.setParameters("datacenterId", datacenterId); return listBy(sc); }
@Override public List<StoragePoolVO> listPoolsByCluster(long clusterId) { SearchCriteria<StoragePoolVO> sc = AllFieldSearch.create(); sc.setParameters("clusterId", clusterId); return listBy(sc); }
@Override public List<StoragePoolVO> listByStatusInZone(long dcId, StoragePoolStatus status) { SearchCriteria<StoragePoolVO> sc = AllFieldSearch.create(); sc.setParameters("status", status); sc.setParameters("datacenterId", dcId); return listBy(sc); }
@Override public List<StoragePoolVO> listPoolByHostPath(String host, String path) { SearchCriteria<StoragePoolVO> sc = AllFieldSearch.create(); sc.setParameters("hostAddress", host); sc.setParameters("path", path); return listBy(sc); }