[
https://issues.apache.org/jira/browse/CLOUDSTACK-9827?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15924531#comment-15924531
]
ASF GitHub Bot commented on CLOUDSTACK-9827:
--------------------------------------------
Github user rafaelweingartner commented on a diff in the pull request:
https://github.com/apache/cloudstack/pull/1994#discussion_r105959564
--- Diff:
engine/schema/src/com/cloud/storage/dao/StoragePoolTagsDaoImpl.java ---
@@ -77,4 +90,68 @@ public void deleteTags(long poolId) {
txn.commit();
}
+ @Override
+ public List<StoragePoolTagVO> searchByIds(Long... stIds) {
+ final int detailsBatchSize = getDetailsBatchSize();
+
+ // query details by batches
+ List<StoragePoolTagVO> uvList = new ArrayList<StoragePoolTagVO>();
+ int curr_index = 0;
+
+ if (stIds.length > detailsBatchSize) {
+ while ((curr_index + detailsBatchSize) <= stIds.length) {
+ searchForStoragePoolIdsInternal(curr_index,
detailsBatchSize, stIds, uvList);
+ curr_index += detailsBatchSize;
+ }
+ }
+
+ if (curr_index < stIds.length) {
+ int batch_size = (stIds.length - curr_index);
+ searchForStoragePoolIdsInternal(curr_index, batch_size, stIds,
uvList);
+ }
+
+ return uvList;
+ }
+
+ /**
+ * Search storage pools
+ * @param currIndex current index
+ * @param batchSize batch size
+ * @param stIds storage tags array
+ * @param uvList
+ */
+ protected void searchForStoragePoolIdsInternal(int currIndex, int
batchSize, Long[] stIds, List<StoragePoolTagVO> uvList) {
+ Long[] ids = new Long[batchSize];
+ for (int k = 0, j = currIndex; j < currIndex + batchSize; j++,
k++) {
+ ids[k] = stIds[j];
+ }
+ SearchCriteria<StoragePoolTagVO> sc =
StoragePoolIdsSearch.create();
+ sc.setParameters("idIN", (Object[])ids);
+ List<StoragePoolTagVO> vms = searchIncludingRemoved(sc, null,
null, false);
+ if (vms != null) {
+ uvList.addAll(vms);
+ }
+ }
+
+ /**
+ * Retrieve {@code detail.batch.query.size} configuration value. If
not available, return the default value (2000)
+ * @return detail.batch.query.size configuration value
+ */
+ protected int getDetailsBatchSize() {
+ String batchCfg = _configDao.getValue("detail.batch.query.size");
+ return batchCfg != null ? Integer.parseInt(batchCfg) : 2000;
--- End diff --
What about extracting the `2000` to a constant in the class?
> Storage tags stored in multiple places
> --------------------------------------
>
> Key: CLOUDSTACK-9827
> URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9827
> Project: CloudStack
> Issue Type: Bug
> Security Level: Public(Anyone can view this level - this is the
> default.)
> Components: Management Server
> Affects Versions: 4.10.0.0
> Environment: N/A
> Reporter: Mike Tutkowski
> Assignee: Nicolas Vazquez
> Priority: Blocker
> Fix For: 4.10.0.0
>
>
> I marked this as a Blocker because it concerns me that we are not handling
> storage tags correctly in 4.10 and, as such, VM storage might get placed in
> locations that users don't want.
> From e-mails I sent to dev@ (most recent to oldest):
> If I add a new primary storage and give it a storage tag, the tag ends up in
> storage_pool_details.
> If I edit an existing storage pool’s storage tags, it places them in
> storage_pool_tags.
> **********
> I believe I have found another bug (one that we should either fix or examine
> in detail before releasing 4.10).
> It looks like we have a new table: cloud.storage_pool_tags.
> The addition of this table seems to have broken the listStorageTags API
> command. When this command runs, it doesn’t pick up any storage tags for me
> (and I know I have one storage tag).
> This data used to be stored in the cloud.storage_pool_details table. It’s
> good to put it in its own table, but will our upgrade process move the
> existing tags from storage_pool_details to storage_pool_tags?
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)