From 623c438f21344084296df0b56d147518c97fffae Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Thu, 26 Aug 2021 18:26:09 +0530 Subject: [PATCH 1/2] api: List details of template download state for stores corresponding to a zone --- .../cloudstack/storage/datastore/db/TemplateDataStoreDao.java | 2 +- .../cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java | 4 +++- .../java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreDao.java b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreDao.java index 77e88a9466e3..f8e210ac326f 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreDao.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreDao.java @@ -66,7 +66,7 @@ public interface TemplateDataStoreDao extends GenericDao listByTemplate(long templateId); - List listByTemplateNotBypassed(long templateId); + List listByTemplateNotBypassed(long templateId, Long... storeIds); TemplateDataStoreVO findByTemplateZoneReady(long templateId, Long zoneId); diff --git a/engine/storage/src/main/java/org/apache/cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java b/engine/storage/src/main/java/org/apache/cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java index ea53825eab0e..075630c508ca 100644 --- a/engine/storage/src/main/java/org/apache/cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java +++ b/engine/storage/src/main/java/org/apache/cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java @@ -99,6 +99,7 @@ public boolean configure(String name, Map params) throws Configu templateSearch.and("template_id", templateSearch.entity().getTemplateId(), SearchCriteria.Op.EQ); templateSearch.and("download_state", templateSearch.entity().getDownloadState(), SearchCriteria.Op.NEQ); templateSearch.and("destroyed", templateSearch.entity().getDestroyed(), SearchCriteria.Op.EQ); + templateSearch.and("storeids", templateSearch.entity().getDataStoreId(), Op.IN); templateSearch.done(); templateRoleSearch = createSearchBuilder(); @@ -421,11 +422,12 @@ public List listByTemplate(long templateId) { } @Override - public List listByTemplateNotBypassed(long templateId) { + public List listByTemplateNotBypassed(long templateId, Long... storeIds) { SearchCriteria sc = templateSearch.create(); sc.setParameters("template_id", templateId); sc.setParameters("download_state", Status.BYPASSED); sc.setParameters("destroyed", false); + sc.setParameters("storeids", (Object) storeIds); return search(sc, null); } diff --git a/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java index db79b96800ab..d80786352bfa 100644 --- a/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java @@ -156,7 +156,9 @@ private String getTemplateStatus(TemplateJoinVO template) { @Override public TemplateResponse newTemplateResponse(EnumSet detailsView, ResponseView view, TemplateJoinVO template) { - List templatesInStore = _templateStoreDao.listByTemplateNotBypassed(template.getId()); + List storesInZone = dataStoreDao.listStoresByZoneId(template.getDataCenterId()); + Long[] storeIds = storesInZone.stream().map(ImageStoreVO::getId).toArray(Long[]::new); + List templatesInStore = _templateStoreDao.listByTemplateNotBypassed(template.getId(), storeIds); List> downloadProgressDetails = new ArrayList(); HashMap downloadDetailInImageStores = null; for (TemplateDataStoreVO templateInStore : templatesInStore) { From b273645fd8deda1d4540c2b7bc93c629d5c57b1f Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Tue, 31 Aug 2021 19:45:11 +0530 Subject: [PATCH 2/2] fix test --- .../cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/storage/src/main/java/org/apache/cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java b/engine/storage/src/main/java/org/apache/cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java index 075630c508ca..8aa411412b34 100644 --- a/engine/storage/src/main/java/org/apache/cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java +++ b/engine/storage/src/main/java/org/apache/cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java @@ -427,7 +427,7 @@ public List listByTemplateNotBypassed(long templateId, Long sc.setParameters("template_id", templateId); sc.setParameters("download_state", Status.BYPASSED); sc.setParameters("destroyed", false); - sc.setParameters("storeids", (Object) storeIds); + sc.setParameters("storeids", storeIds); return search(sc, null); }