@Override public void deletePoolTags(long poolId) { _tagsDao.deleteTags(poolId); } }
@Override public List<String> searchForStoragePoolTags(long poolId) { return _tagsDao.getStoragePoolTags(poolId); }
public static StorageTagResponse newStorageTagResponse(StoragePoolTagVO vr) { return s_tagDao.newStorageTagResponse(vr); }
private Pair<List<StoragePoolTagVO>, Integer> searchForStorageTagsInternal(ListStorageTagsCmd cmd) { Filter searchFilter = new Filter(StoragePoolTagVO.class, "id", Boolean.TRUE, null, null); SearchBuilder<StoragePoolTagVO> sb = _storageTagDao.createSearchBuilder(); sb.select(null, Func.DISTINCT, sb.entity().getId()); // select distinct SearchCriteria<StoragePoolTagVO> sc = sb.create(); // search storage tag details by ids Pair<List<StoragePoolTagVO>, Integer> uniqueTagPair = _storageTagDao.searchAndCount(sc, searchFilter); Integer count = uniqueTagPair.second(); if (count.intValue() == 0) { return uniqueTagPair; } List<StoragePoolTagVO> uniqueTags = uniqueTagPair.first(); Long[] vrIds = new Long[uniqueTags.size()]; int i = 0; for (StoragePoolTagVO v : uniqueTags) { vrIds[i++] = v.getId(); } List<StoragePoolTagVO> vrs = _storageTagDao.searchByIds(vrIds); return new Pair<List<StoragePoolTagVO>, Integer>(vrs, count); }
@Override @DB public StoragePoolVO persist(StoragePoolVO pool, Map<String, String> details, List<String> tags) { TransactionLegacy txn = TransactionLegacy.currentTxn(); txn.start(); pool = super.persist(pool); if (details != null) { for (Map.Entry<String, String> detail : details.entrySet()) { StoragePoolDetailVO vo = new StoragePoolDetailVO(pool.getId(), detail.getKey(), detail.getValue(), true); _detailsDao.persist(vo); } } if (CollectionUtils.isNotEmpty(tags)) { _tagsDao.persist(pool.getId(), tags); } txn.commit(); return pool; }
@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); }
s_logger.debug("Updating Storage Pool Tags to :" + storagePoolTags); _storagePoolTagsDao.persist(pool.getId(), storagePoolTags);