Address various UI requirements by introducing provider constants.

This commit is contained in:
Min Chen 2013-05-06 15:12:33 -07:00
parent 4db84fb45e
commit 0d78209b73
11 changed files with 40 additions and 26 deletions

View File

@ -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();

View File

@ -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 {

View File

@ -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,

View File

@ -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);
}
}
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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);