Address various UI requirements by introducing provider constants. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/0d78209b Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/0d78209b Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/0d78209b
Branch: refs/heads/object_store Commit: 0d78209b736cc0c67990e9179d3d465b4208ca51 Parents: 4db84fb Author: Min Chen <min.c...@citrix.com> Authored: Mon May 6 15:12:33 2013 -0700 Committer: Min Chen <min.c...@citrix.com> Committed: Mon May 6 15:12:33 2013 -0700 ---------------------------------------------------------------------- .../command/admin/storage/AddImageStoreCmd.java | 2 +- .../storage/template/DownloadManagerImpl.java | 7 +----- .../subsystem/api/storage/DataStoreProvider.java | 8 +++++++ .../storage/image/TemplateServiceImpl.java | 17 ++++++++++++-- .../provider/DataStoreProviderManagerImpl.java | 12 ++++------ .../provider/CloudStackImageStoreProviderImpl.java | 3 +- .../provider/S3ImageStoreProviderImpl.java | 3 +- .../provider/SampleImageStoreProviderImpl.java | 3 +- .../provider/SwiftImageStoreProviderImpl.java | 6 +--- .../CloudStackPrimaryDataStoreProviderImpl.java | 3 +- .../cloud/template/HypervisorTemplateAdapter.java | 2 +- 11 files changed, 40 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0d78209b/api/src/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java b/api/src/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java index ef9921d..8349774 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java @@ -75,7 +75,7 @@ public class AddImageStoreCmd extends BaseCmd { public Map<String, String> getDetails() { Map<String, String> detailsMap = null; - if (!details.isEmpty()) { + if (details != null && !details.isEmpty()) { detailsMap = new HashMap<String, String>(); Collection<?> props = details.values(); Iterator<?> iter = props.iterator(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0d78209b/core/src/com/cloud/storage/template/DownloadManagerImpl.java ---------------------------------------------------------------------- diff --git a/core/src/com/cloud/storage/template/DownloadManagerImpl.java b/core/src/com/cloud/storage/template/DownloadManagerImpl.java index cd6165d..12914b0 100755 --- a/core/src/com/cloud/storage/template/DownloadManagerImpl.java +++ b/core/src/com/cloud/storage/template/DownloadManagerImpl.java @@ -505,12 +505,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager String cksum, String installPathPrefix, String user, String password, long maxTemplateSizeInBytes, Proxy proxy, ResourceType resourceType) { UUID uuid = UUID.randomUUID(); String jobId = uuid.toString(); - String tmpDir = ""; - if (resourceType == ResourceType.TEMPLATE) { - tmpDir = installPathPrefix + File.separator + accountId + File.separator + id; - } else { - tmpDir = installPathPrefix + File.separator + id; - } + String tmpDir = installPathPrefix; try { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0d78209b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreProvider.java ---------------------------------------------------------------------- diff --git a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreProvider.java b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreProvider.java index c0c1f76..cdcdef8 100644 --- a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreProvider.java +++ b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreProvider.java @@ -25,6 +25,14 @@ import java.util.Set; public interface DataStoreProvider { + // constants for provider names + public static final String NFS_IMAGE = "NFS"; + public static final String S3_IMAGE = "S3"; + public static final String SWIFT_IMAGE = "Swift"; + public static final String SAMPLE_IMAGE = "Sample"; + + public static final String DEFAULT_PRIMARY = "DefaultPrimary"; + public static enum DataStoreProviderType { PRIMARY, IMAGE, http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0d78209b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java ---------------------------------------------------------------------- diff --git a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java index 60b3f53..30c7183 100644 --- a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java +++ b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java @@ -62,6 +62,7 @@ import org.apache.log4j.Logger; import org.springframework.stereotype.Component; import com.cloud.agent.api.Answer; +import com.cloud.agent.api.storage.DeleteTemplateCommand; import com.cloud.agent.api.storage.ListTemplateAnswer; import com.cloud.agent.api.storage.ListTemplateCommand; import com.cloud.alert.AlertManager; @@ -381,9 +382,19 @@ public class TemplateServiceImpl implements TemplateService { List<UserVmVO> userVmUsingIso = _userVmDao.listByIsoId(tInfo.getId()); //check if there is any Vm using this ISO. if (userVmUsingIso == null || userVmUsingIso.isEmpty()) { - deleteTemplateAsync(_templateFactory.getTemplate(tInfo.getId(), store)); - String description = "Deleted template " + tInfo.getTemplateName() + " on secondary storage " + storeId; - s_logger.info(description); + //TODO: we cannot directly call deleteTemplateSync here to reuse delete logic since in this case, our db does not have this template at all. + VMTemplateVO template = _templateDao.findById(tInfo.getId()); + DeleteTemplateCommand dtCommand = new DeleteTemplateCommand(store.getTO(), tInfo.getInstallPath(), template.getId(), template.getAccountId()); + EndPoint ep = _epSelector.select(store); + Answer answer = ep.sendMessage(dtCommand); + if (answer == null || !answer.getResult()) { + s_logger.info("Failed to deleted template at store: " + store.getName()); + + } else { + String description = "Deleted template " + tInfo.getTemplateName() + " on secondary storage " + storeId; + s_logger.info(description); + } + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0d78209b/engine/storage/src/org/apache/cloudstack/storage/datastore/provider/DataStoreProviderManagerImpl.java ---------------------------------------------------------------------- diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/provider/DataStoreProviderManagerImpl.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/provider/DataStoreProviderManagerImpl.java index e34a35e..796afe2 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/datastore/provider/DataStoreProviderManagerImpl.java +++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/provider/DataStoreProviderManagerImpl.java @@ -31,9 +31,7 @@ import org.apache.cloudstack.api.response.StorageProviderResponse; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider.DataStoreProviderType; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProviderManager; -import org.apache.cloudstack.engine.subsystem.api.storage.ImageStoreProvider; import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver; -import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreProvider; import org.apache.cloudstack.storage.datastore.PrimaryDataStoreProviderManager; import org.apache.cloudstack.storage.image.ImageStoreDriver; import org.apache.cloudstack.storage.image.datastore.ImageStoreProviderManager; @@ -90,7 +88,7 @@ public class DataStoreProviderManagerImpl extends ManagerBase implements DataSto } return providers; } - + public List<StorageProviderResponse> getCacheDataStoreProviders() { List<StorageProviderResponse> providers = new ArrayList<StorageProviderResponse>(); for (DataStoreProvider provider : providerMap.values()) { @@ -147,18 +145,18 @@ public class DataStoreProviderManagerImpl extends ManagerBase implements DataSto @Override public DataStoreProvider getDefaultPrimaryDataStoreProvider() { - return this.getDataStoreProvider("cloudstack primary data store provider"); + return this.getDataStoreProvider(DataStoreProvider.DEFAULT_PRIMARY); } @Override public DataStoreProvider getDefaultImageDataStoreProvider() { - return this.getDataStoreProvider("CloudStack ImageStore Provider"); + return this.getDataStoreProvider(DataStoreProvider.NFS_IMAGE); } - + @Override public DataStoreProvider getDefaultCacheDataStoreProvider() { - return this.getDataStoreProvider("cloudstack image store provider"); + return this.getDataStoreProvider(DataStoreProvider.NFS_IMAGE); } @Override http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0d78209b/plugins/storage/image/default/src/org/apache/cloudstack/storage/datastore/provider/CloudStackImageStoreProviderImpl.java ---------------------------------------------------------------------- diff --git a/plugins/storage/image/default/src/org/apache/cloudstack/storage/datastore/provider/CloudStackImageStoreProviderImpl.java b/plugins/storage/image/default/src/org/apache/cloudstack/storage/datastore/provider/CloudStackImageStoreProviderImpl.java index 953a078..c9952e2 100644 --- a/plugins/storage/image/default/src/org/apache/cloudstack/storage/datastore/provider/CloudStackImageStoreProviderImpl.java +++ b/plugins/storage/image/default/src/org/apache/cloudstack/storage/datastore/provider/CloudStackImageStoreProviderImpl.java @@ -25,6 +25,7 @@ import javax.inject.Inject; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreDriver; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreLifeCycle; +import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider; import org.apache.cloudstack.engine.subsystem.api.storage.HypervisorHostListener; import org.apache.cloudstack.engine.subsystem.api.storage.ImageStoreProvider; import org.apache.cloudstack.storage.datastore.driver.CloudStackImageStoreDriverImpl; @@ -41,7 +42,7 @@ import com.cloud.utils.component.ComponentContext; @Component public class CloudStackImageStoreProviderImpl implements ImageStoreProvider { - private final String providerName = "CloudStack ImageStore Provider"; + private final String providerName = DataStoreProvider.NFS_IMAGE; protected ImageStoreLifeCycle lifeCycle; protected ImageStoreDriver driver; @Inject http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0d78209b/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/provider/S3ImageStoreProviderImpl.java ---------------------------------------------------------------------- diff --git a/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/provider/S3ImageStoreProviderImpl.java b/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/provider/S3ImageStoreProviderImpl.java index 174e2db..7efb59a 100644 --- a/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/provider/S3ImageStoreProviderImpl.java +++ b/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/provider/S3ImageStoreProviderImpl.java @@ -28,6 +28,7 @@ import javax.inject.Inject; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreDriver; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreLifeCycle; +import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider; import org.apache.cloudstack.engine.subsystem.api.storage.HypervisorHostListener; import org.apache.cloudstack.engine.subsystem.api.storage.ImageStoreProvider; import org.apache.cloudstack.storage.datastore.driver.S3ImageStoreDriverImpl; @@ -44,7 +45,7 @@ import com.cloud.utils.component.ComponentContext; @Component public class S3ImageStoreProviderImpl implements ImageStoreProvider { - private final String providerName = "S3"; + private final String providerName = DataStoreProvider.S3_IMAGE; protected ImageStoreLifeCycle lifeCycle; protected ImageStoreDriver driver; @Inject http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0d78209b/plugins/storage/image/sample/src/org/apache/cloudstack/storage/datastore/provider/SampleImageStoreProviderImpl.java ---------------------------------------------------------------------- diff --git a/plugins/storage/image/sample/src/org/apache/cloudstack/storage/datastore/provider/SampleImageStoreProviderImpl.java b/plugins/storage/image/sample/src/org/apache/cloudstack/storage/datastore/provider/SampleImageStoreProviderImpl.java index 4b96da7..1a0614b 100644 --- a/plugins/storage/image/sample/src/org/apache/cloudstack/storage/datastore/provider/SampleImageStoreProviderImpl.java +++ b/plugins/storage/image/sample/src/org/apache/cloudstack/storage/datastore/provider/SampleImageStoreProviderImpl.java @@ -26,6 +26,7 @@ import javax.inject.Inject; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreDriver; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreLifeCycle; +import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider; import org.apache.cloudstack.engine.subsystem.api.storage.HypervisorHostListener; import org.apache.cloudstack.engine.subsystem.api.storage.ImageStoreProvider; import org.apache.cloudstack.storage.datastore.driver.SampleImageStoreDriverImpl; @@ -38,7 +39,7 @@ import com.cloud.storage.ScopeType; import com.cloud.utils.component.ComponentContext; public class SampleImageStoreProviderImpl implements ImageStoreProvider { - private final String name = "sample image data store provider"; + private final String name = DataStoreProvider.SAMPLE_IMAGE; protected ImageStoreLifeCycle lifeCycle; protected ImageStoreDriver driver; @Inject http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0d78209b/plugins/storage/image/swift/src/org/apache/cloudstack/storage/datastore/provider/SwiftImageStoreProviderImpl.java ---------------------------------------------------------------------- diff --git a/plugins/storage/image/swift/src/org/apache/cloudstack/storage/datastore/provider/SwiftImageStoreProviderImpl.java b/plugins/storage/image/swift/src/org/apache/cloudstack/storage/datastore/provider/SwiftImageStoreProviderImpl.java index 2ba2e9d..bd6f9f0 100644 --- a/plugins/storage/image/swift/src/org/apache/cloudstack/storage/datastore/provider/SwiftImageStoreProviderImpl.java +++ b/plugins/storage/image/swift/src/org/apache/cloudstack/storage/datastore/provider/SwiftImageStoreProviderImpl.java @@ -18,16 +18,14 @@ */ package org.apache.cloudstack.storage.datastore.provider; -import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; -import java.util.UUID; - import javax.inject.Inject; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreDriver; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreLifeCycle; +import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider; import org.apache.cloudstack.engine.subsystem.api.storage.HypervisorHostListener; import org.apache.cloudstack.engine.subsystem.api.storage.ImageStoreProvider; import org.apache.cloudstack.storage.datastore.driver.SwiftImageStoreDriverImpl; @@ -44,7 +42,7 @@ import com.cloud.utils.component.ComponentContext; @Component public class SwiftImageStoreProviderImpl implements ImageStoreProvider { - private final String providerName = "Swift"; + private final String providerName = DataStoreProvider.SWIFT_IMAGE; protected ImageStoreLifeCycle lifeCycle; protected ImageStoreDriver driver; @Inject http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0d78209b/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/provider/CloudStackPrimaryDataStoreProviderImpl.java ---------------------------------------------------------------------- diff --git a/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/provider/CloudStackPrimaryDataStoreProviderImpl.java b/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/provider/CloudStackPrimaryDataStoreProviderImpl.java index af1d0c4..dc9d985 100644 --- a/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/provider/CloudStackPrimaryDataStoreProviderImpl.java +++ b/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/provider/CloudStackPrimaryDataStoreProviderImpl.java @@ -23,6 +23,7 @@ import java.util.Map; import java.util.Set; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreLifeCycle; +import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider; import org.apache.cloudstack.engine.subsystem.api.storage.HypervisorHostListener; import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver; import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreProvider; @@ -34,7 +35,7 @@ import com.cloud.utils.component.ComponentContext; public class CloudStackPrimaryDataStoreProviderImpl implements PrimaryDataStoreProvider { - private final String providerName = "cloudstack primary data store provider"; + private final String providerName = DataStoreProvider.DEFAULT_PRIMARY; protected PrimaryDataStoreDriver driver; protected HypervisorHostListener listener; protected DataStoreLifeCycle lifecyle; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0d78209b/server/src/com/cloud/template/HypervisorTemplateAdapter.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/template/HypervisorTemplateAdapter.java b/server/src/com/cloud/template/HypervisorTemplateAdapter.java index ae1e178..7e560e3 100755 --- a/server/src/com/cloud/template/HypervisorTemplateAdapter.java +++ b/server/src/com/cloud/template/HypervisorTemplateAdapter.java @@ -175,7 +175,7 @@ public class HypervisorTemplateAdapter extends TemplateAdapterBase implements Te TemplateInfo tmpl = this.imageFactory.getTemplate(template.getId(), imageStore); CreateTemplateContext<TemplateApiResult> context = new CreateTemplateContext<TemplateApiResult>(null, tmpl); AsyncCallbackDispatcher<HypervisorTemplateAdapter, TemplateApiResult> caller = AsyncCallbackDispatcher.create(this); - caller.setCallback(this.createTemplateAsyncCallBack(null, null)); + caller.setCallback(caller.getTarget().createTemplateAsyncCallBack(null, null)); caller.setContext(context); this.imageService .createTemplateAsync(tmpl, imageStore, caller);