mirror of https://github.com/apache/cloudstack.git
When secondary storage is not running inside SSVM, let FOSS SecondaryStorageDiscoverer be able to dynamically load premium version of the secondary storage resource
This commit is contained in:
parent
c082425b16
commit
2f3a1ccd60
|
|
@ -17,6 +17,8 @@
|
|||
*/
|
||||
package com.cloud.hypervisor;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import com.cloud.agent.api.BackupSnapshotCommand;
|
||||
|
|
@ -29,6 +31,8 @@ import com.cloud.agent.api.DeleteSnapshotsDirCommand;
|
|||
import com.cloud.agent.api.storage.CopyVolumeCommand;
|
||||
import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand;
|
||||
import com.cloud.agent.api.to.VirtualMachineTO;
|
||||
import com.cloud.host.HostVO;
|
||||
import com.cloud.host.Status;
|
||||
import com.cloud.host.dao.DetailsDao;
|
||||
import com.cloud.host.dao.HostDao;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
|
|
@ -80,8 +84,6 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru {
|
|||
needDelegation = true;
|
||||
}
|
||||
|
||||
// Enable when SSVM packaging is ready
|
||||
/*
|
||||
if(needDelegation) {
|
||||
HostVO host = _hostDao.findById(hostId);
|
||||
assert(host != null);
|
||||
|
|
@ -100,7 +102,7 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru {
|
|||
return hostSecStorage.getId();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
return hostId;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -161,7 +161,6 @@ public class ConfigurationServerImpl implements ConfigurationServer {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
_configDao.update("secondary.storage.vm", "true");
|
||||
s_logger.debug("ConfigurationServer made secondary storage vm required.");
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@
|
|||
package com.cloud.storage.secondary;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.net.URI;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
|
|
@ -38,8 +40,6 @@ import com.cloud.hypervisor.Hypervisor;
|
|||
import com.cloud.resource.Discoverer;
|
||||
import com.cloud.resource.DiscovererBase;
|
||||
import com.cloud.resource.ServerResource;
|
||||
import com.cloud.storage.VMTemplateHostVO;
|
||||
import com.cloud.storage.VMTemplateStorageResourceAssoc;
|
||||
import com.cloud.storage.VMTemplateVO;
|
||||
import com.cloud.storage.VMTemplateZoneVO;
|
||||
import com.cloud.storage.dao.VMTemplateDao;
|
||||
|
|
@ -47,9 +47,7 @@ import com.cloud.storage.dao.VMTemplateHostDao;
|
|||
import com.cloud.storage.dao.VMTemplateZoneDao;
|
||||
import com.cloud.storage.resource.DummySecondaryStorageResource;
|
||||
import com.cloud.storage.resource.NfsSecondaryStorageResource;
|
||||
import com.cloud.storage.template.TemplateConstants;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.net.NfsUtils;
|
||||
import com.cloud.utils.script.Script;
|
||||
|
||||
|
|
@ -138,7 +136,41 @@ public class SecondaryStorageDiscoverer extends DiscovererBase implements Discov
|
|||
|
||||
Map<NfsSecondaryStorageResource, Map<String, String>> srs = new HashMap<NfsSecondaryStorageResource, Map<String, String>>();
|
||||
|
||||
NfsSecondaryStorageResource storage = new NfsSecondaryStorageResource();
|
||||
NfsSecondaryStorageResource storage;
|
||||
if(_configDao.isPremium()) {
|
||||
Class<?> impl;
|
||||
String name = "com.cloud.storage.resource.PremiumSecondaryStorageResource";
|
||||
try {
|
||||
impl = Class.forName(name);
|
||||
final Constructor<?> constructor = impl.getDeclaredConstructor();
|
||||
constructor.setAccessible(true);
|
||||
storage = (NfsSecondaryStorageResource)constructor.newInstance();
|
||||
} catch (final ClassNotFoundException e) {
|
||||
s_logger.error("Unable to load com.cloud.storage.resource.PremiumSecondaryStorageResource due to ClassNotFoundException");
|
||||
return null;
|
||||
} catch (final SecurityException e) {
|
||||
s_logger.error("Unable to load com.cloud.storage.resource.PremiumSecondaryStorageResource due to SecurityException");
|
||||
return null;
|
||||
} catch (final NoSuchMethodException e) {
|
||||
s_logger.error("Unable to load com.cloud.storage.resource.PremiumSecondaryStorageResource due to NoSuchMethodException");
|
||||
return null;
|
||||
} catch (final IllegalArgumentException e) {
|
||||
s_logger.error("Unable to load com.cloud.storage.resource.PremiumSecondaryStorageResource due to IllegalArgumentException");
|
||||
return null;
|
||||
} catch (final InstantiationException e) {
|
||||
s_logger.error("Unable to load com.cloud.storage.resource.PremiumSecondaryStorageResource due to InstantiationException");
|
||||
return null;
|
||||
} catch (final IllegalAccessException e) {
|
||||
s_logger.error("Unable to load com.cloud.storage.resource.PremiumSecondaryStorageResource due to IllegalAccessException");
|
||||
return null;
|
||||
} catch (final InvocationTargetException e) {
|
||||
s_logger.error("Unable to load com.cloud.storage.resource.PremiumSecondaryStorageResource due to InvocationTargetException");
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
storage = new NfsSecondaryStorageResource();
|
||||
}
|
||||
|
||||
Map<String, String> details = new HashMap<String, String>();
|
||||
details.put("mount.path", mountStr);
|
||||
details.put("orig.url", uri.toString());
|
||||
|
|
|
|||
Loading…
Reference in New Issue