diff --git a/server/src/main/java/com/cloud/template/TemplateManagerImpl.java b/server/src/main/java/com/cloud/template/TemplateManagerImpl.java index d5e10383991..3a241faccd9 100755 --- a/server/src/main/java/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/main/java/com/cloud/template/TemplateManagerImpl.java @@ -616,6 +616,18 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, private void prepareTemplateInOneStoragePool(final VMTemplateVO template, final StoragePoolVO pool) { s_logger.info("Schedule to preload template " + template.getId() + " into primary storage " + pool.getId()); + if (pool.getPoolType() == Storage.StoragePoolType.DatastoreCluster) { + List childDataStores = _poolDao.listChildStoragePoolsInDatastoreCluster(pool.getId()); + s_logger.debug("Schedule to preload template " + template.getId() + " into child datastores of DataStore cluster: " + pool.getId()); + for (StoragePoolVO childDataStore : childDataStores) { + prepareTemplateInOneStoragePoolInternal(template, childDataStore); + } + } else { + prepareTemplateInOneStoragePoolInternal(template, pool); + } + } + + private void prepareTemplateInOneStoragePoolInternal(final VMTemplateVO template, final StoragePoolVO pool) { _preloadExecutor.execute(new ManagedContextRunnable() { @Override protected void runInContext() {