CLOUDSTACK-9252: New refactor
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/3fb18bd4 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/3fb18bd4 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/3fb18bd4 Branch: refs/heads/master Commit: 3fb18bd4946caf0ba89a00aa7504b472c4806a09 Parents: cc50c20 Author: nvazquez <[email protected]> Authored: Wed Feb 3 07:08:39 2016 -0800 Committer: nvazquez <[email protected]> Committed: Wed Feb 3 07:08:39 2016 -0800 ---------------------------------------------------------------------- ...spring-engine-storage-image-core-context.xml | 6 +- .../storage/image/TemplateServiceImpl.java | 4 +- .../vmware/manager/VmwareManagerImpl.java | 8 +- .../manager/VmwareStorageManagerImpl.java | 12 +-- .../resource/VmwareStorageProcessor.java | 26 +++--- .../VmwareStorageSubsystemCommandHandler.java | 10 +- .../vmware/VmwareDatacenterApiUnitTest.java | 6 +- server/src/com/cloud/server/StatsCollector.java | 4 +- .../cloud/storage/ImageStoreDetailsUtil.java | 36 +++++++- .../storage/ImageStoreDetailsUtilImpl.java | 97 -------------------- .../SecondaryStorageManagerImpl.java | 4 +- .../resource/NfsSecondaryStorageResource.java | 4 +- .../storage/template/DownloadManagerImpl.java | 11 ++- 13 files changed, 81 insertions(+), 147 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3fb18bd4/engine/storage/image/resources/META-INF/cloudstack/core/spring-engine-storage-image-core-context.xml ---------------------------------------------------------------------- diff --git a/engine/storage/image/resources/META-INF/cloudstack/core/spring-engine-storage-image-core-context.xml b/engine/storage/image/resources/META-INF/cloudstack/core/spring-engine-storage-image-core-context.xml index 40f724b..2441d1c 100644 --- a/engine/storage/image/resources/META-INF/cloudstack/core/spring-engine-storage-image-core-context.xml +++ b/engine/storage/image/resources/META-INF/cloudstack/core/spring-engine-storage-image-core-context.xml @@ -29,7 +29,7 @@ <bean id="templateServiceImpl" class="org.apache.cloudstack.storage.image.TemplateServiceImpl" - depends-on="dataObjectManagerImpl, dataStoreManagerImpl, dataMotionServiceImpl, objectInDataStoreManagerImpl, defaultEndPointSelector, templateDataFactoryImpl, imageStoreDetailsUtilImpl" /> + depends-on="dataObjectManagerImpl, dataStoreManagerImpl, dataMotionServiceImpl, objectInDataStoreManagerImpl, defaultEndPointSelector, templateDataFactoryImpl, imageStoreDetailsUtil" /> <bean id="templateDataFactoryImpl" class="org.apache.cloudstack.storage.image.TemplateDataFactoryImpl" /> @@ -38,8 +38,8 @@ class="org.apache.cloudstack.storage.image.datastore.ImageStoreHelper" /> <bean id="imageFormatHelper" class="org.apache.cloudstack.storage.image.format.ImageFormatHelper" /> - <bean id="imageStoreDetailsUtilImpl" - class="com.cloud.storage.ImageStoreDetailsUtilImpl" /> + <bean id="imageStoreDetailsUtil" + class="com.cloud.storage.ImageStoreDetailsUtil" /> <bean id="imageStoreProviderMgr" class="org.apache.cloudstack.storage.image.manager.ImageStoreProviderManagerImpl" /> http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3fb18bd4/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 edad977..a1d10e3 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 @@ -137,7 +137,7 @@ public class TemplateServiceImpl implements TemplateService { @Inject StorageCacheManager _cacheMgr; @Inject - ImageStoreDetailsUtil _imageStoreDetailsUtil; + ImageStoreDetailsUtil imageStoreDetailsUtil; class TemplateOpContext<T> extends AsyncRpcContext<T> { final TemplateObject template; @@ -567,7 +567,7 @@ public class TemplateServiceImpl implements TemplateService { } private Map<String, TemplateProp> listTemplate(DataStore ssStore) { - ListTemplateCommand cmd = new ListTemplateCommand(ssStore.getTO(), _imageStoreDetailsUtil.getNfsVersion(ssStore.getId())); + ListTemplateCommand cmd = new ListTemplateCommand(ssStore.getTO(), imageStoreDetailsUtil.getNfsVersion(ssStore.getId())); EndPoint ep = _epSelector.select(ssStore); Answer answer = null; if (ep == null) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3fb18bd4/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java index bf47845..71383c3 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java @@ -47,6 +47,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.utils.identity.ManagementServerNode; +import org.springframework.context.ApplicationContext; import com.cloud.agent.AgentManager; import com.cloud.agent.Listener; @@ -168,8 +169,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw private ManagementServerHostPeerDao _mshostPeerDao; @Inject private ClusterManager _clusterMgr; - @Inject - private ImageStoreDetailsUtil _imageStoreDetailsUtil; + private ImageStoreDetailsUtil imageStoreDetailsUtil; private String _mountParent; private StorageLayer _storage; @@ -202,6 +202,8 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw public VmwareManagerImpl() { _storageMgr = new VmwareStorageManagerImpl(this); + ApplicationContext applicationContext = com.cloud.utils.component.ComponentContext.getApplicationContext(); + imageStoreDetailsUtil = applicationContext.getBean("imageStoreDetailsUtil", ImageStoreDetailsUtil.class); } @Override @@ -553,7 +555,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw @Override public void prepareSecondaryStorageStore(String storageUrl, Long storeId) { - String mountPoint = getMountPoint(storageUrl, _imageStoreDetailsUtil.getNfsVersion(storeId)); + String mountPoint = getMountPoint(storageUrl, imageStoreDetailsUtil.getNfsVersion(storeId)); GlobalLock lock = GlobalLock.getInternLock("prepare.systemvm"); try { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3fb18bd4/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java index 35d1dad..8d5fc10 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java @@ -29,8 +29,6 @@ import java.util.Map; import java.util.Properties; import java.util.UUID; -import javax.inject.Inject; - import org.apache.log4j.Logger; import com.vmware.vim25.FileInfo; @@ -44,6 +42,7 @@ import com.vmware.vim25.VirtualDisk; import org.apache.cloudstack.storage.to.TemplateObjectTO; import org.apache.cloudstack.storage.to.VolumeObjectTO; +import org.springframework.context.ApplicationContext; import com.cloud.agent.api.Answer; import com.cloud.agent.api.BackupSnapshotAnswer; @@ -96,8 +95,7 @@ import com.cloud.vm.snapshot.VMSnapshot; public class VmwareStorageManagerImpl implements VmwareStorageManager { - @Inject - ImageStoreDetailsUtil _imageStoreDetailsUtil; + private ImageStoreDetailsUtil imageStoreDetailsUtil; @Override public boolean execute(VmwareHostService hostService, CreateEntityDownloadURLCommand cmd) { @@ -143,6 +141,8 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { public VmwareStorageManagerImpl(VmwareStorageMount mountService) { assert (mountService != null); _mountService = mountService; + ApplicationContext applicationContext = com.cloud.utils.component.ComponentContext.getApplicationContext(); + imageStoreDetailsUtil = applicationContext.getBean("imageStoreDetailsUtil", ImageStoreDetailsUtil.class); } public void configure(Map<String, Object> params) { @@ -163,7 +163,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { String secStorageUrl = nfsStore.getUrl(); assert (secStorageUrl != null); String installPath = template.getPath(); - String secondaryMountPoint = _mountService.getMountPoint(secStorageUrl, _imageStoreDetailsUtil.getNfsVersionByUuid(storeTO.getUuid())); + String secondaryMountPoint = _mountService.getMountPoint(secStorageUrl, imageStoreDetailsUtil.getNfsVersionByUuid(storeTO.getUuid())); String installFullPath = secondaryMountPoint + "/" + installPath; try { if (installFullPath.endsWith(".ova")) { @@ -201,7 +201,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { String installPath = volume.getPath(); int index = installPath.lastIndexOf(File.separator); String volumeUuid = installPath.substring(index + 1); - String secondaryMountPoint = _mountService.getMountPoint(secStorageUrl, _imageStoreDetailsUtil.getNfsVersionByUuid(storeTO.getUuid())); + String secondaryMountPoint = _mountService.getMountPoint(secStorageUrl, imageStoreDetailsUtil.getNfsVersionByUuid(storeTO.getUuid())); //The real volume path String volumePath = installPath + File.separator + volumeUuid + ".ova"; String installFullPath = secondaryMountPoint + "/" + installPath; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3fb18bd4/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java index b469ae2..660b93b 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java +++ b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java @@ -33,8 +33,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import javax.inject.Inject; - import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -69,6 +67,7 @@ import org.apache.cloudstack.storage.to.PrimaryDataStoreTO; import org.apache.cloudstack.storage.to.SnapshotObjectTO; import org.apache.cloudstack.storage.to.TemplateObjectTO; import org.apache.cloudstack.storage.to.VolumeObjectTO; +import org.springframework.context.ApplicationContext; import com.cloud.agent.api.Answer; import com.cloud.agent.api.Command; @@ -113,8 +112,7 @@ import com.cloud.vm.VmDetailConstants; public class VmwareStorageProcessor implements StorageProcessor { - @Inject - ImageStoreDetailsUtil _imageStoreDetailsUtil; + private ImageStoreDetailsUtil imageStoreDetailsUtil; private static final Logger s_logger = Logger.getLogger(VmwareStorageProcessor.class); private static final int DEFAULT_NFS_PORT = 2049; @@ -137,6 +135,8 @@ public class VmwareStorageProcessor implements StorageProcessor { this.resource = resource; _shutdownWaitMs = shutdownWaitMs; _gson = GsonHelper.getGsonLogger(); + ApplicationContext applicationContext = com.cloud.utils.component.ComponentContext.getApplicationContext(); + imageStoreDetailsUtil = applicationContext.getBean("imageStoreDetailsUtil", ImageStoreDetailsUtil.class); } @Override @@ -323,7 +323,7 @@ public class VmwareStorageProcessor implements StorageProcessor { if (managed) { VirtualMachineMO vmMo = copyTemplateFromSecondaryToPrimary(hyperHost, dsMo, secondaryStorageUrl, templateInfo.first(), templateInfo.second(), - managedStoragePoolRootVolumeName, false, _imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid())); + managedStoragePoolRootVolumeName, false, imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid())); vmMo.unregisterVm(); @@ -340,7 +340,7 @@ public class VmwareStorageProcessor implements StorageProcessor { } else { copyTemplateFromSecondaryToPrimary(hyperHost, dsMo, secondaryStorageUrl, templateInfo.first(), templateInfo.second(), - templateUuidName, true, _imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid())); + templateUuidName, true, imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid())); } } else { s_logger.info("Template " + templateInfo.second() + " has already been setup, skip the template setup process in primary storage"); @@ -585,8 +585,8 @@ public class VmwareStorageProcessor implements StorageProcessor { } } - Pair<String, String> result = copyVolumeFromSecStorage(hyperHost, srcVolume.getPath(), new DatastoreMO(context, morDatastore), srcStore.getUrl(), (long)cmd.getWait() * 1000, _imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid())); - deleteVolumeDirOnSecondaryStorage(result.first(), srcStore.getUrl(), _imageStoreDetailsUtil.getNfsVersionByUuid(uuid)); + Pair<String, String> result = copyVolumeFromSecStorage(hyperHost, srcVolume.getPath(), new DatastoreMO(context, morDatastore), srcStore.getUrl(), (long)cmd.getWait() * 1000, imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid())); + deleteVolumeDirOnSecondaryStorage(result.first(), srcStore.getUrl(), imageStoreDetailsUtil.getNfsVersionByUuid(uuid)); VolumeObjectTO newVolume = new VolumeObjectTO(); newVolume.setPath(result.second()); return new CopyCmdAnswer(newVolume); @@ -644,7 +644,7 @@ public class VmwareStorageProcessor implements StorageProcessor { vmMo.createSnapshot(exportName, "Temporary snapshot for copy-volume command", false, false); exportVolumeToSecondaryStroage(vmMo, volumePath, secStorageUrl, destVolumePath, exportName, hostService.getWorkerName(hyperHost.getContext(), cmd, 1), - _imageStoreDetailsUtil.getNfsVersionByUuid(cmd.getDestTO().getDataStore().getUuid())); + imageStoreDetailsUtil.getNfsVersionByUuid(cmd.getDestTO().getDataStore().getUuid())); return new Pair<String, String>(destVolumePath, exportName); } finally { @@ -846,7 +846,7 @@ public class VmwareStorageProcessor implements StorageProcessor { Ternary<String, Long, Long> result = createTemplateFromVolume(vmMo, template.getPath(), template.getId(), template.getName(), secondaryStoragePoolURL, volumePath, - hostService.getWorkerName(context, cmd, 0), _imageStoreDetailsUtil.getNfsVersionByUuid(imageStore.getUuid())); + hostService.getWorkerName(context, cmd, 0), imageStoreDetailsUtil.getNfsVersionByUuid(imageStore.getUuid())); TemplateObjectTO newTemplate = new TemplateObjectTO(); newTemplate.setPath(result.first()); @@ -1038,7 +1038,7 @@ public class VmwareStorageProcessor implements StorageProcessor { NfsTO nfsSvr = (NfsTO)imageStore; Ternary<String, Long, Long> result = createTemplateFromSnapshot(template.getPath(), uniqeName, nfsSvr.getUrl(), snapshot.getPath(), template.getId(), (long)cmd.getWait() * 1000, - _imageStoreDetailsUtil.getNfsVersionByUuid(imageStore.getUuid())); + imageStoreDetailsUtil.getNfsVersionByUuid(imageStore.getUuid())); TemplateObjectTO newTemplate = new TemplateObjectTO(); newTemplate.setPath(result.first()); @@ -1181,7 +1181,7 @@ public class VmwareStorageProcessor implements StorageProcessor { throw new Exception("Failed to take snapshot " + srcSnapshot.getName() + " on vm: " + vmName); } - String nfsVersion = _imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid()); + String nfsVersion = imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid()); backupResult = backupSnapshotToSecondaryStorage(vmMo, destSnapshot.getPath(), srcSnapshot.getVolume().getPath(), snapshotUuid, secondaryStorageUrl, prevSnapshotUuid, prevBackupUuid, hostService.getWorkerName(context, cmd, 1), nfsVersion); @@ -2258,7 +2258,7 @@ public class VmwareStorageProcessor implements StorageProcessor { backedUpSnapshotUuid = backedUpSnapshotUuid.replace(".ovf", ""); } DatastoreMO primaryDsMo = new DatastoreMO(hyperHost.getContext(), morPrimaryDs); - restoreVolumeFromSecStorage(hyperHost, primaryDsMo, newVolumeName, secondaryStorageUrl, backupPath, backedUpSnapshotUuid, (long)cmd.getWait() * 1000, _imageStoreDetailsUtil.getNfsVersionByUuid(imageStore.getUuid())); + restoreVolumeFromSecStorage(hyperHost, primaryDsMo, newVolumeName, secondaryStorageUrl, backupPath, backedUpSnapshotUuid, (long)cmd.getWait() * 1000, imageStoreDetailsUtil.getNfsVersionByUuid(imageStore.getUuid())); VolumeObjectTO newVol = new VolumeObjectTO(); newVol.setPath(newVolumeName); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3fb18bd4/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageSubsystemCommandHandler.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageSubsystemCommandHandler.java b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageSubsystemCommandHandler.java index b8544d0..212c811 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageSubsystemCommandHandler.java +++ b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageSubsystemCommandHandler.java @@ -20,8 +20,6 @@ package com.cloud.storage.resource; import java.io.File; -import javax.inject.Inject; - import org.apache.log4j.Logger; import org.apache.cloudstack.storage.command.CopyCmdAnswer; import org.apache.cloudstack.storage.command.CopyCommand; @@ -29,6 +27,7 @@ import org.apache.cloudstack.storage.command.DeleteCommand; import org.apache.cloudstack.storage.to.SnapshotObjectTO; import org.apache.cloudstack.storage.to.TemplateObjectTO; import org.apache.cloudstack.storage.to.VolumeObjectTO; +import org.springframework.context.ApplicationContext; import com.cloud.agent.api.Answer; import com.cloud.agent.api.to.DataObjectType; @@ -43,8 +42,7 @@ import com.cloud.storage.ImageStoreDetailsUtil; public class VmwareStorageSubsystemCommandHandler extends StorageSubsystemCommandHandlerBase { - @Inject - ImageStoreDetailsUtil _imageStoreDetailsUtil; + private ImageStoreDetailsUtil imageStoreDetailsUtil; private static final Logger s_logger = Logger.getLogger(VmwareStorageSubsystemCommandHandler.class); private VmwareStorageManager storageManager; @@ -68,6 +66,8 @@ public class VmwareStorageSubsystemCommandHandler extends StorageSubsystemComman public VmwareStorageSubsystemCommandHandler(StorageProcessor processor) { super(processor); + ApplicationContext applicationContext = com.cloud.utils.component.ComponentContext.getApplicationContext(); + imageStoreDetailsUtil = applicationContext.getBean("imageStoreDetailsUtil", ImageStoreDetailsUtil.class); } @Override @@ -84,7 +84,7 @@ public class VmwareStorageSubsystemCommandHandler extends StorageSubsystemComman } } - String nfsVersion = _imageStoreDetailsUtil.getNfsVersionByUuid(srcDataStore.getUuid()); + String nfsVersion = imageStoreDetailsUtil.getNfsVersionByUuid(srcDataStore.getUuid()); if (srcDataStore.getRole() == DataStoreRole.ImageCache && destDataStore.getRole() == DataStoreRole.Image) { //need to take extra processing for vmware, such as packing to ova, before sending to S3 if (srcData.getObjectType() == DataObjectType.VOLUME) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3fb18bd4/plugins/hypervisors/vmware/test/com/cloud/hypervisor/vmware/VmwareDatacenterApiUnitTest.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/vmware/test/com/cloud/hypervisor/vmware/VmwareDatacenterApiUnitTest.java b/plugins/hypervisors/vmware/test/com/cloud/hypervisor/vmware/VmwareDatacenterApiUnitTest.java index c4c48a5..c72d9d4 100644 --- a/plugins/hypervisors/vmware/test/com/cloud/hypervisor/vmware/VmwareDatacenterApiUnitTest.java +++ b/plugins/hypervisors/vmware/test/com/cloud/hypervisor/vmware/VmwareDatacenterApiUnitTest.java @@ -134,7 +134,7 @@ public class VmwareDatacenterApiUnitTest { AccountManager _acctMgr; @Inject - ImageStoreDetailsUtil _imageStoreDetailsUtil; + ImageStoreDetailsUtil imageStoreDetailsUtil; long zoneId; long podId; @@ -230,8 +230,8 @@ public class VmwareDatacenterApiUnitTest { Mockito.when(addCmd.getPassword()).thenReturn(password); Mockito.when(addCmd.getName()).thenReturn(vmwareDcName); Mockito.when(removeCmd.getZoneId()).thenReturn(1L); - Mockito.when(_imageStoreDetailsUtil.getNfsVersion(Mockito.anyLong())).thenReturn(null); - Mockito.when(_imageStoreDetailsUtil.getNfsVersionByUuid(Mockito.anyString())).thenReturn(null); + Mockito.when(imageStoreDetailsUtil.getNfsVersion(Mockito.anyLong())).thenReturn(null); + Mockito.when(imageStoreDetailsUtil.getNfsVersionByUuid(Mockito.anyString())).thenReturn(null); } @After http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3fb18bd4/server/src/com/cloud/server/StatsCollector.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/server/StatsCollector.java b/server/src/com/cloud/server/StatsCollector.java index b5d6b79..6f0c928 100644 --- a/server/src/com/cloud/server/StatsCollector.java +++ b/server/src/com/cloud/server/StatsCollector.java @@ -199,7 +199,7 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc @Inject private HostGpuGroupsDao _hostGpuGroupsDao; @Inject - ImageStoreDetailsUtil _imageStoreDetailsUtil; + ImageStoreDetailsUtil imageStoreDetailsUtil; private ConcurrentHashMap<Long, HostStats> _hostStats = new ConcurrentHashMap<Long, HostStats>(); private final ConcurrentHashMap<Long, VmStats> _VmStats = new ConcurrentHashMap<Long, VmStats>(); @@ -717,7 +717,7 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc continue; } - GetStorageStatsCommand command = new GetStorageStatsCommand(store.getTO(), _imageStoreDetailsUtil.getNfsVersion(store.getId())); + GetStorageStatsCommand command = new GetStorageStatsCommand(store.getTO(), imageStoreDetailsUtil.getNfsVersion(store.getId())); EndPoint ssAhost = _epSelector.select(store); if (ssAhost == null) { s_logger.debug("There is no secondary storage VM for secondary storage host " + store.getName()); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3fb18bd4/server/src/com/cloud/storage/ImageStoreDetailsUtil.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/ImageStoreDetailsUtil.java b/server/src/com/cloud/storage/ImageStoreDetailsUtil.java index 201fdb4..4ce0bd7 100755 --- a/server/src/com/cloud/storage/ImageStoreDetailsUtil.java +++ b/server/src/com/cloud/storage/ImageStoreDetailsUtil.java @@ -16,10 +16,22 @@ // under the License. package com.cloud.storage; -import com.cloud.utils.component.Manager; +import java.util.Map; +import javax.inject.Inject; -public interface ImageStoreDetailsUtil extends Manager { +import org.apache.cloudstack.storage.datastore.db.ImageStoreDao; +import org.apache.cloudstack.storage.datastore.db.ImageStoreDetailsDao; +import org.apache.cloudstack.storage.datastore.db.ImageStoreVO; +import org.springframework.stereotype.Component; + +@Component +public class ImageStoreDetailsUtil { + + @Inject + protected ImageStoreDao imageStoreDao; + @Inject + protected ImageStoreDetailsDao imageStoreDetailsDao; /** * Obtain NFS protocol version (if provided) for a store id.<br/> @@ -28,7 +40,16 @@ public interface ImageStoreDetailsUtil extends Manager { * @return {@code null} if {@code nfs.version} is not found for storeId <br/> * {@code X} if {@code nfs.version} is found found for storeId */ - public String getNfsVersion(long storeId); + public String getNfsVersion(long storeId) { + String nfsVersion = null; + if (imageStoreDetailsDao.getDetails(storeId) != null){ + Map<String, String> storeDetails = imageStoreDetailsDao.getDetails(storeId); + if (storeDetails != null && storeDetails.containsKey("nfs.version")){ + nfsVersion = storeDetails.get("nfs.version"); + } + } + return nfsVersion; + } /** * Obtain NFS protocol version (if provided) for a store uuid.<br/> @@ -37,5 +58,12 @@ public interface ImageStoreDetailsUtil extends Manager { * @return {@code null} if {@code nfs.version} is not found for storeUuid <br/> * {@code X} if {@code nfs.version} is found found for storeUuid */ - public String getNfsVersionByUuid(String storeUuid); + public String getNfsVersionByUuid(String storeUuid){ + ImageStoreVO imageStore = imageStoreDao.findByUuid(storeUuid); + if (imageStore != null){ + return getNfsVersion(imageStore.getId()); + } + return null; + } + } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3fb18bd4/server/src/com/cloud/storage/ImageStoreDetailsUtilImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/ImageStoreDetailsUtilImpl.java b/server/src/com/cloud/storage/ImageStoreDetailsUtilImpl.java deleted file mode 100755 index d0207ba..0000000 --- a/server/src/com/cloud/storage/ImageStoreDetailsUtilImpl.java +++ /dev/null @@ -1,97 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.storage; - -import java.util.Map; - -import javax.inject.Inject; -import javax.naming.ConfigurationException; - -import org.apache.cloudstack.storage.datastore.db.ImageStoreDao; -import org.apache.cloudstack.storage.datastore.db.ImageStoreDetailsDao; -import org.apache.cloudstack.storage.datastore.db.ImageStoreVO; -import org.springframework.stereotype.Component; - -@Component -public class ImageStoreDetailsUtilImpl implements ImageStoreDetailsUtil { - - @Inject - private ImageStoreDao imageStoreDao; - @Inject - private ImageStoreDetailsDao imageStoreDetailsDao; - - public String getNfsVersion(long storeId) { - String nfsVersion = null; - if (imageStoreDetailsDao.getDetails(storeId) != null){ - Map<String, String> storeDetails = imageStoreDetailsDao.getDetails(storeId); - if (storeDetails != null && storeDetails.containsKey("nfs.version")){ - nfsVersion = storeDetails.get("nfs.version"); - } - } - return nfsVersion; - } - - public String getNfsVersionByUuid(String storeUuid){ - ImageStoreVO imageStore = imageStoreDao.findByUuid(storeUuid); - if (imageStore != null){ - return getNfsVersion(imageStore.getId()); - } - return null; - } - - @Override - public String getName() { - return null; - } - - @Override - public void setName(String name) { - } - - @Override - public void setConfigParams(Map<String, Object> params) { - } - - @Override - public Map<String, Object> getConfigParams() { - return null; - } - - @Override - public int getRunLevel() { - return 0; - } - - @Override - public void setRunLevel(int level) { - } - - @Override - public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { - return false; - } - - @Override - public boolean start() { - return true; - } - - @Override - public boolean stop() { - return false; - } -} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3fb18bd4/services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java ---------------------------------------------------------------------- diff --git a/services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java b/services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java index ba17b55..c1445ad 100644 --- a/services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java +++ b/services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java @@ -241,7 +241,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar @Inject VolumeDataStoreDao _volumeStoreDao; @Inject - ImageStoreDetailsUtil _imageStoreDetailsUtil; + ImageStoreDetailsUtil imageStoreDetailsUtil; private long _capacityScanInterval = DEFAULT_CAPACITY_SCAN_INTERVAL; private int _secStorageVmMtuSize; @@ -313,7 +313,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar setupCmd = new SecStorageSetupCommand(ssStore.getTO(), secUrl, certs); } - setupCmd.setNfsVersion(_imageStoreDetailsUtil.getNfsVersion(ssStore.getId())); + setupCmd.setNfsVersion(imageStoreDetailsUtil.getNfsVersion(ssStore.getId())); //template/volume file upload key String postUploadKey = _configDao.getValue(Config.SSVMPSK.key()); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3fb18bd4/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java ---------------------------------------------------------------------- diff --git a/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java b/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java index bae66b6..25a9878 100644 --- a/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java +++ b/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java @@ -146,7 +146,7 @@ import com.cloud.host.Host.Type; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.resource.ServerResourceBase; import com.cloud.storage.DataStoreRole; -import com.cloud.storage.ImageStoreDetailsUtilImpl; +import com.cloud.storage.ImageStoreDetailsUtil; import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.StorageLayer; import com.cloud.storage.VMTemplateStorageResourceAssoc; @@ -175,7 +175,7 @@ import org.joda.time.format.ISODateTimeFormat; public class NfsSecondaryStorageResource extends ServerResourceBase implements SecondaryStorageResource { @Inject - ImageStoreDetailsUtilImpl _imageStoreDetailsUtil; + ImageStoreDetailsUtil _imageStoreDetailsUtil; private static final Logger s_logger = Logger.getLogger(NfsSecondaryStorageResource.class); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3fb18bd4/services/secondary-storage/server/src/org/apache/cloudstack/storage/template/DownloadManagerImpl.java ---------------------------------------------------------------------- diff --git a/services/secondary-storage/server/src/org/apache/cloudstack/storage/template/DownloadManagerImpl.java b/services/secondary-storage/server/src/org/apache/cloudstack/storage/template/DownloadManagerImpl.java index c6f2ac8..6fb2aa2 100644 --- a/services/secondary-storage/server/src/org/apache/cloudstack/storage/template/DownloadManagerImpl.java +++ b/services/secondary-storage/server/src/org/apache/cloudstack/storage/template/DownloadManagerImpl.java @@ -38,7 +38,6 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import javax.inject.Inject; import javax.naming.ConfigurationException; import org.apache.cloudstack.storage.command.DownloadCommand; @@ -47,6 +46,7 @@ import org.apache.cloudstack.storage.command.DownloadProgressCommand; import org.apache.cloudstack.storage.command.DownloadProgressCommand.RequestType; import org.apache.cloudstack.storage.resource.SecondaryStorageResource; import org.apache.log4j.Logger; +import org.springframework.context.ApplicationContext; import com.cloud.agent.api.storage.DownloadAnswer; import com.cloud.utils.net.Proxy; @@ -54,7 +54,7 @@ import com.cloud.agent.api.to.DataStoreTO; import com.cloud.agent.api.to.NfsTO; import com.cloud.agent.api.to.S3TO; import com.cloud.exception.InternalErrorException; -import com.cloud.storage.ImageStoreDetailsUtilImpl; +import com.cloud.storage.ImageStoreDetailsUtil; import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.StorageLayer; import com.cloud.storage.VMTemplateHostVO; @@ -91,8 +91,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager StorageLayer _storage; public Map<String, Processor> _processors; - @Inject - ImageStoreDetailsUtilImpl _imageStoreDetailsUtil; + private ImageStoreDetailsUtil imageStoreDetailsUtil; public class Completion implements DownloadCompleteCallback { private final String jobId; @@ -713,7 +712,7 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager String installPathPrefix = cmd.getInstallPath(); // for NFS, we need to get mounted path if (dstore instanceof NfsTO) { - installPathPrefix = resource.getRootDir(((NfsTO)dstore).getUrl(), _imageStoreDetailsUtil.getNfsVersionByUuid(dstore.getUuid())) + File.separator + installPathPrefix; + installPathPrefix = resource.getRootDir(((NfsTO)dstore).getUrl(), imageStoreDetailsUtil.getNfsVersionByUuid(dstore.getUuid())) + File.separator + installPathPrefix; } String user = null; String password = null; @@ -955,6 +954,8 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager } public DownloadManagerImpl() { + ApplicationContext applicationContext = com.cloud.utils.component.ComponentContext.getApplicationContext(); + imageStoreDetailsUtil = applicationContext.getBean("imageStoreDetailsUtil", ImageStoreDetailsUtil.class); } @Override
