diff --git a/server/src/com/cloud/hypervisor/VMwareGuru.java b/server/src/com/cloud/hypervisor/VMwareGuru.java index cc1a74eafab..7685606bf8e 100644 --- a/server/src/com/cloud/hypervisor/VMwareGuru.java +++ b/server/src/com/cloud/hypervisor/VMwareGuru.java @@ -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; } } diff --git a/server/src/com/cloud/server/ConfigurationServerImpl.java b/server/src/com/cloud/server/ConfigurationServerImpl.java index 4f826c572db..d4e5ed9cdb5 100644 --- a/server/src/com/cloud/server/ConfigurationServerImpl.java +++ b/server/src/com/cloud/server/ConfigurationServerImpl.java @@ -161,7 +161,6 @@ public class ConfigurationServerImpl implements ConfigurationServer { } } - _configDao.update("secondary.storage.vm", "true"); s_logger.debug("ConfigurationServer made secondary storage vm required."); diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageDiscoverer.java b/server/src/com/cloud/storage/secondary/SecondaryStorageDiscoverer.java index d37f6f0c271..5d8b0586b5a 100644 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageDiscoverer.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageDiscoverer.java @@ -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> srs = new HashMap>(); - 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 details = new HashMap(); details.put("mount.path", mountStr); details.put("orig.url", uri.toString());