Skip to content

Commit 3fb18bd

Browse files
committed
CLOUDSTACK-9252: New refactor
1 parent cc50c20 commit 3fb18bd

File tree

13 files changed

+81
-147
lines changed

13 files changed

+81
-147
lines changed

engine/storage/image/resources/META-INF/cloudstack/core/spring-engine-storage-image-core-context.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
<bean id="templateServiceImpl"
3131
class="org.apache.cloudstack.storage.image.TemplateServiceImpl"
32-
depends-on="dataObjectManagerImpl, dataStoreManagerImpl, dataMotionServiceImpl, objectInDataStoreManagerImpl, defaultEndPointSelector, templateDataFactoryImpl, imageStoreDetailsUtilImpl" />
32+
depends-on="dataObjectManagerImpl, dataStoreManagerImpl, dataMotionServiceImpl, objectInDataStoreManagerImpl, defaultEndPointSelector, templateDataFactoryImpl, imageStoreDetailsUtil" />
3333

3434
<bean id="templateDataFactoryImpl"
3535
class="org.apache.cloudstack.storage.image.TemplateDataFactoryImpl" />
@@ -38,8 +38,8 @@
3838
class="org.apache.cloudstack.storage.image.datastore.ImageStoreHelper" />
3939
<bean id="imageFormatHelper"
4040
class="org.apache.cloudstack.storage.image.format.ImageFormatHelper" />
41-
<bean id="imageStoreDetailsUtilImpl"
42-
class="com.cloud.storage.ImageStoreDetailsUtilImpl" />
41+
<bean id="imageStoreDetailsUtil"
42+
class="com.cloud.storage.ImageStoreDetailsUtil" />
4343

4444
<bean id="imageStoreProviderMgr"
4545
class="org.apache.cloudstack.storage.image.manager.ImageStoreProviderManagerImpl" />

engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public class TemplateServiceImpl implements TemplateService {
137137
@Inject
138138
StorageCacheManager _cacheMgr;
139139
@Inject
140-
ImageStoreDetailsUtil _imageStoreDetailsUtil;
140+
ImageStoreDetailsUtil imageStoreDetailsUtil;
141141

142142
class TemplateOpContext<T> extends AsyncRpcContext<T> {
143143
final TemplateObject template;
@@ -567,7 +567,7 @@ public void associateCrosszoneTemplatesToZone(long dcId) {
567567
}
568568

569569
private Map<String, TemplateProp> listTemplate(DataStore ssStore) {
570-
ListTemplateCommand cmd = new ListTemplateCommand(ssStore.getTO(), _imageStoreDetailsUtil.getNfsVersion(ssStore.getId()));
570+
ListTemplateCommand cmd = new ListTemplateCommand(ssStore.getTO(), imageStoreDetailsUtil.getNfsVersion(ssStore.getId()));
571571
EndPoint ep = _epSelector.select(ssStore);
572572
Answer answer = null;
573573
if (ep == null) {

plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
4848
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
4949
import org.apache.cloudstack.utils.identity.ManagementServerNode;
50+
import org.springframework.context.ApplicationContext;
5051

5152
import com.cloud.agent.AgentManager;
5253
import com.cloud.agent.Listener;
@@ -168,8 +169,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw
168169
private ManagementServerHostPeerDao _mshostPeerDao;
169170
@Inject
170171
private ClusterManager _clusterMgr;
171-
@Inject
172-
private ImageStoreDetailsUtil _imageStoreDetailsUtil;
172+
private ImageStoreDetailsUtil imageStoreDetailsUtil;
173173

174174
private String _mountParent;
175175
private StorageLayer _storage;
@@ -202,6 +202,8 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw
202202

203203
public VmwareManagerImpl() {
204204
_storageMgr = new VmwareStorageManagerImpl(this);
205+
ApplicationContext applicationContext = com.cloud.utils.component.ComponentContext.getApplicationContext();
206+
imageStoreDetailsUtil = applicationContext.getBean("imageStoreDetailsUtil", ImageStoreDetailsUtil.class);
205207
}
206208

207209
@Override
@@ -553,7 +555,7 @@ public boolean needRecycle(String workerTag) {
553555

554556
@Override
555557
public void prepareSecondaryStorageStore(String storageUrl, Long storeId) {
556-
String mountPoint = getMountPoint(storageUrl, _imageStoreDetailsUtil.getNfsVersion(storeId));
558+
String mountPoint = getMountPoint(storageUrl, imageStoreDetailsUtil.getNfsVersion(storeId));
557559

558560
GlobalLock lock = GlobalLock.getInternLock("prepare.systemvm");
559561
try {

plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929
import java.util.Properties;
3030
import java.util.UUID;
3131

32-
import javax.inject.Inject;
33-
3432
import org.apache.log4j.Logger;
3533

3634
import com.vmware.vim25.FileInfo;
@@ -44,6 +42,7 @@
4442

4543
import org.apache.cloudstack.storage.to.TemplateObjectTO;
4644
import org.apache.cloudstack.storage.to.VolumeObjectTO;
45+
import org.springframework.context.ApplicationContext;
4746

4847
import com.cloud.agent.api.Answer;
4948
import com.cloud.agent.api.BackupSnapshotAnswer;
@@ -96,8 +95,7 @@
9695

9796
public class VmwareStorageManagerImpl implements VmwareStorageManager {
9897

99-
@Inject
100-
ImageStoreDetailsUtil _imageStoreDetailsUtil;
98+
private ImageStoreDetailsUtil imageStoreDetailsUtil;
10199

102100
@Override
103101
public boolean execute(VmwareHostService hostService, CreateEntityDownloadURLCommand cmd) {
@@ -143,6 +141,8 @@ public void createOva(String path, String name) {
143141
public VmwareStorageManagerImpl(VmwareStorageMount mountService) {
144142
assert (mountService != null);
145143
_mountService = mountService;
144+
ApplicationContext applicationContext = com.cloud.utils.component.ComponentContext.getApplicationContext();
145+
imageStoreDetailsUtil = applicationContext.getBean("imageStoreDetailsUtil", ImageStoreDetailsUtil.class);
146146
}
147147

148148
public void configure(Map<String, Object> params) {
@@ -163,7 +163,7 @@ public String createOvaForTemplate(TemplateObjectTO template) {
163163
String secStorageUrl = nfsStore.getUrl();
164164
assert (secStorageUrl != null);
165165
String installPath = template.getPath();
166-
String secondaryMountPoint = _mountService.getMountPoint(secStorageUrl, _imageStoreDetailsUtil.getNfsVersionByUuid(storeTO.getUuid()));
166+
String secondaryMountPoint = _mountService.getMountPoint(secStorageUrl, imageStoreDetailsUtil.getNfsVersionByUuid(storeTO.getUuid()));
167167
String installFullPath = secondaryMountPoint + "/" + installPath;
168168
try {
169169
if (installFullPath.endsWith(".ova")) {
@@ -201,7 +201,7 @@ public String createOvaForVolume(VolumeObjectTO volume) {
201201
String installPath = volume.getPath();
202202
int index = installPath.lastIndexOf(File.separator);
203203
String volumeUuid = installPath.substring(index + 1);
204-
String secondaryMountPoint = _mountService.getMountPoint(secStorageUrl, _imageStoreDetailsUtil.getNfsVersionByUuid(storeTO.getUuid()));
204+
String secondaryMountPoint = _mountService.getMountPoint(secStorageUrl, imageStoreDetailsUtil.getNfsVersionByUuid(storeTO.getUuid()));
205205
//The real volume path
206206
String volumePath = installPath + File.separator + volumeUuid + ".ova";
207207
String installFullPath = secondaryMountPoint + "/" + installPath;

plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@
3333
import java.util.concurrent.Executors;
3434
import java.util.concurrent.TimeUnit;
3535

36-
import javax.inject.Inject;
37-
3836
import org.apache.commons.lang.StringUtils;
3937
import org.apache.log4j.Logger;
4038

@@ -69,6 +67,7 @@
6967
import org.apache.cloudstack.storage.to.SnapshotObjectTO;
7068
import org.apache.cloudstack.storage.to.TemplateObjectTO;
7169
import org.apache.cloudstack.storage.to.VolumeObjectTO;
70+
import org.springframework.context.ApplicationContext;
7271

7372
import com.cloud.agent.api.Answer;
7473
import com.cloud.agent.api.Command;
@@ -113,8 +112,7 @@
113112

114113
public class VmwareStorageProcessor implements StorageProcessor {
115114

116-
@Inject
117-
ImageStoreDetailsUtil _imageStoreDetailsUtil;
115+
private ImageStoreDetailsUtil imageStoreDetailsUtil;
118116

119117
private static final Logger s_logger = Logger.getLogger(VmwareStorageProcessor.class);
120118
private static final int DEFAULT_NFS_PORT = 2049;
@@ -137,6 +135,8 @@ public VmwareStorageProcessor(VmwareHostService hostService, boolean fullCloneFl
137135
this.resource = resource;
138136
_shutdownWaitMs = shutdownWaitMs;
139137
_gson = GsonHelper.getGsonLogger();
138+
ApplicationContext applicationContext = com.cloud.utils.component.ComponentContext.getApplicationContext();
139+
imageStoreDetailsUtil = applicationContext.getBean("imageStoreDetailsUtil", ImageStoreDetailsUtil.class);
140140
}
141141

142142
@Override
@@ -323,7 +323,7 @@ public Answer copyTemplateToPrimaryStorage(CopyCommand cmd) {
323323

324324
if (managed) {
325325
VirtualMachineMO vmMo = copyTemplateFromSecondaryToPrimary(hyperHost, dsMo, secondaryStorageUrl, templateInfo.first(), templateInfo.second(),
326-
managedStoragePoolRootVolumeName, false, _imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid()));
326+
managedStoragePoolRootVolumeName, false, imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid()));
327327

328328
vmMo.unregisterVm();
329329

@@ -340,7 +340,7 @@ public Answer copyTemplateToPrimaryStorage(CopyCommand cmd) {
340340
}
341341
else {
342342
copyTemplateFromSecondaryToPrimary(hyperHost, dsMo, secondaryStorageUrl, templateInfo.first(), templateInfo.second(),
343-
templateUuidName, true, _imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid()));
343+
templateUuidName, true, imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid()));
344344
}
345345
} else {
346346
s_logger.info("Template " + templateInfo.second() + " has already been setup, skip the template setup process in primary storage");
@@ -585,8 +585,8 @@ public Answer copyVolumeFromImageCacheToPrimary(CopyCommand cmd) {
585585
}
586586
}
587587

588-
Pair<String, String> result = copyVolumeFromSecStorage(hyperHost, srcVolume.getPath(), new DatastoreMO(context, morDatastore), srcStore.getUrl(), (long)cmd.getWait() * 1000, _imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid()));
589-
deleteVolumeDirOnSecondaryStorage(result.first(), srcStore.getUrl(), _imageStoreDetailsUtil.getNfsVersionByUuid(uuid));
588+
Pair<String, String> result = copyVolumeFromSecStorage(hyperHost, srcVolume.getPath(), new DatastoreMO(context, morDatastore), srcStore.getUrl(), (long)cmd.getWait() * 1000, imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid()));
589+
deleteVolumeDirOnSecondaryStorage(result.first(), srcStore.getUrl(), imageStoreDetailsUtil.getNfsVersionByUuid(uuid));
590590
VolumeObjectTO newVolume = new VolumeObjectTO();
591591
newVolume.setPath(result.second());
592592
return new CopyCmdAnswer(newVolume);
@@ -644,7 +644,7 @@ private Pair<String, String> copyVolumeToSecStorage(VmwareHostService hostServic
644644
vmMo.createSnapshot(exportName, "Temporary snapshot for copy-volume command", false, false);
645645

646646
exportVolumeToSecondaryStroage(vmMo, volumePath, secStorageUrl, destVolumePath, exportName, hostService.getWorkerName(hyperHost.getContext(), cmd, 1),
647-
_imageStoreDetailsUtil.getNfsVersionByUuid(cmd.getDestTO().getDataStore().getUuid()));
647+
imageStoreDetailsUtil.getNfsVersionByUuid(cmd.getDestTO().getDataStore().getUuid()));
648648
return new Pair<String, String>(destVolumePath, exportName);
649649

650650
} finally {
@@ -846,7 +846,7 @@ public Answer createTemplateFromVolume(CopyCommand cmd) {
846846

847847
Ternary<String, Long, Long> result =
848848
createTemplateFromVolume(vmMo, template.getPath(), template.getId(), template.getName(), secondaryStoragePoolURL, volumePath,
849-
hostService.getWorkerName(context, cmd, 0), _imageStoreDetailsUtil.getNfsVersionByUuid(imageStore.getUuid()));
849+
hostService.getWorkerName(context, cmd, 0), imageStoreDetailsUtil.getNfsVersionByUuid(imageStore.getUuid()));
850850

851851
TemplateObjectTO newTemplate = new TemplateObjectTO();
852852
newTemplate.setPath(result.first());
@@ -1038,7 +1038,7 @@ public Answer createTemplateFromSnapshot(CopyCommand cmd) {
10381038

10391039
NfsTO nfsSvr = (NfsTO)imageStore;
10401040
Ternary<String, Long, Long> result = createTemplateFromSnapshot(template.getPath(), uniqeName, nfsSvr.getUrl(), snapshot.getPath(), template.getId(), (long)cmd.getWait() * 1000,
1041-
_imageStoreDetailsUtil.getNfsVersionByUuid(imageStore.getUuid()));
1041+
imageStoreDetailsUtil.getNfsVersionByUuid(imageStore.getUuid()));
10421042

10431043
TemplateObjectTO newTemplate = new TemplateObjectTO();
10441044
newTemplate.setPath(result.first());
@@ -1181,7 +1181,7 @@ public Answer backupSnapshot(CopyCommand cmd) {
11811181
throw new Exception("Failed to take snapshot " + srcSnapshot.getName() + " on vm: " + vmName);
11821182
}
11831183

1184-
String nfsVersion = _imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid());
1184+
String nfsVersion = imageStoreDetailsUtil.getNfsVersionByUuid(destStore.getUuid());
11851185
backupResult =
11861186
backupSnapshotToSecondaryStorage(vmMo, destSnapshot.getPath(), srcSnapshot.getVolume().getPath(), snapshotUuid, secondaryStorageUrl,
11871187
prevSnapshotUuid, prevBackupUuid, hostService.getWorkerName(context, cmd, 1), nfsVersion);
@@ -2258,7 +2258,7 @@ public Answer createVolumeFromSnapshot(CopyCommand cmd) {
22582258
backedUpSnapshotUuid = backedUpSnapshotUuid.replace(".ovf", "");
22592259
}
22602260
DatastoreMO primaryDsMo = new DatastoreMO(hyperHost.getContext(), morPrimaryDs);
2261-
restoreVolumeFromSecStorage(hyperHost, primaryDsMo, newVolumeName, secondaryStorageUrl, backupPath, backedUpSnapshotUuid, (long)cmd.getWait() * 1000, _imageStoreDetailsUtil.getNfsVersionByUuid(imageStore.getUuid()));
2261+
restoreVolumeFromSecStorage(hyperHost, primaryDsMo, newVolumeName, secondaryStorageUrl, backupPath, backedUpSnapshotUuid, (long)cmd.getWait() * 1000, imageStoreDetailsUtil.getNfsVersionByUuid(imageStore.getUuid()));
22622262

22632263
VolumeObjectTO newVol = new VolumeObjectTO();
22642264
newVol.setPath(newVolumeName);

plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageSubsystemCommandHandler.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,14 @@
2020

2121
import java.io.File;
2222

23-
import javax.inject.Inject;
24-
2523
import org.apache.log4j.Logger;
2624
import org.apache.cloudstack.storage.command.CopyCmdAnswer;
2725
import org.apache.cloudstack.storage.command.CopyCommand;
2826
import org.apache.cloudstack.storage.command.DeleteCommand;
2927
import org.apache.cloudstack.storage.to.SnapshotObjectTO;
3028
import org.apache.cloudstack.storage.to.TemplateObjectTO;
3129
import org.apache.cloudstack.storage.to.VolumeObjectTO;
30+
import org.springframework.context.ApplicationContext;
3231

3332
import com.cloud.agent.api.Answer;
3433
import com.cloud.agent.api.to.DataObjectType;
@@ -43,8 +42,7 @@
4342

4443
public class VmwareStorageSubsystemCommandHandler extends StorageSubsystemCommandHandlerBase {
4544

46-
@Inject
47-
ImageStoreDetailsUtil _imageStoreDetailsUtil;
45+
private ImageStoreDetailsUtil imageStoreDetailsUtil;
4846

4947
private static final Logger s_logger = Logger.getLogger(VmwareStorageSubsystemCommandHandler.class);
5048
private VmwareStorageManager storageManager;
@@ -68,6 +66,8 @@ public void setStorageManager(VmwareStorageManager storageManager) {
6866

6967
public VmwareStorageSubsystemCommandHandler(StorageProcessor processor) {
7068
super(processor);
69+
ApplicationContext applicationContext = com.cloud.utils.component.ComponentContext.getApplicationContext();
70+
imageStoreDetailsUtil = applicationContext.getBean("imageStoreDetailsUtil", ImageStoreDetailsUtil.class);
7171
}
7272

7373
@Override
@@ -84,7 +84,7 @@ protected Answer execute(CopyCommand cmd) {
8484
}
8585
}
8686

87-
String nfsVersion = _imageStoreDetailsUtil.getNfsVersionByUuid(srcDataStore.getUuid());
87+
String nfsVersion = imageStoreDetailsUtil.getNfsVersionByUuid(srcDataStore.getUuid());
8888
if (srcDataStore.getRole() == DataStoreRole.ImageCache && destDataStore.getRole() == DataStoreRole.Image) {
8989
//need to take extra processing for vmware, such as packing to ova, before sending to S3
9090
if (srcData.getObjectType() == DataObjectType.VOLUME) {

plugins/hypervisors/vmware/test/com/cloud/hypervisor/vmware/VmwareDatacenterApiUnitTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ public class VmwareDatacenterApiUnitTest {
134134
AccountManager _acctMgr;
135135

136136
@Inject
137-
ImageStoreDetailsUtil _imageStoreDetailsUtil;
137+
ImageStoreDetailsUtil imageStoreDetailsUtil;
138138

139139
long zoneId;
140140
long podId;
@@ -230,8 +230,8 @@ public void testSetUp() {
230230
Mockito.when(addCmd.getPassword()).thenReturn(password);
231231
Mockito.when(addCmd.getName()).thenReturn(vmwareDcName);
232232
Mockito.when(removeCmd.getZoneId()).thenReturn(1L);
233-
Mockito.when(_imageStoreDetailsUtil.getNfsVersion(Mockito.anyLong())).thenReturn(null);
234-
Mockito.when(_imageStoreDetailsUtil.getNfsVersionByUuid(Mockito.anyString())).thenReturn(null);
233+
Mockito.when(imageStoreDetailsUtil.getNfsVersion(Mockito.anyLong())).thenReturn(null);
234+
Mockito.when(imageStoreDetailsUtil.getNfsVersionByUuid(Mockito.anyString())).thenReturn(null);
235235
}
236236

237237
@After

server/src/com/cloud/server/StatsCollector.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ public String toString() {
199199
@Inject
200200
private HostGpuGroupsDao _hostGpuGroupsDao;
201201
@Inject
202-
ImageStoreDetailsUtil _imageStoreDetailsUtil;
202+
ImageStoreDetailsUtil imageStoreDetailsUtil;
203203

204204
private ConcurrentHashMap<Long, HostStats> _hostStats = new ConcurrentHashMap<Long, HostStats>();
205205
private final ConcurrentHashMap<Long, VmStats> _VmStats = new ConcurrentHashMap<Long, VmStats>();
@@ -717,7 +717,7 @@ protected void runInContext() {
717717
continue;
718718
}
719719

720-
GetStorageStatsCommand command = new GetStorageStatsCommand(store.getTO(), _imageStoreDetailsUtil.getNfsVersion(store.getId()));
720+
GetStorageStatsCommand command = new GetStorageStatsCommand(store.getTO(), imageStoreDetailsUtil.getNfsVersion(store.getId()));
721721
EndPoint ssAhost = _epSelector.select(store);
722722
if (ssAhost == null) {
723723
s_logger.debug("There is no secondary storage VM for secondary storage host " + store.getName());

server/src/com/cloud/storage/ImageStoreDetailsUtil.java

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,22 @@
1616
// under the License.
1717
package com.cloud.storage;
1818

19-
import com.cloud.utils.component.Manager;
19+
import java.util.Map;
2020

21+
import javax.inject.Inject;
2122

22-
public interface ImageStoreDetailsUtil extends Manager {
23+
import org.apache.cloudstack.storage.datastore.db.ImageStoreDao;
24+
import org.apache.cloudstack.storage.datastore.db.ImageStoreDetailsDao;
25+
import org.apache.cloudstack.storage.datastore.db.ImageStoreVO;
26+
import org.springframework.stereotype.Component;
27+
28+
@Component
29+
public class ImageStoreDetailsUtil {
30+
31+
@Inject
32+
protected ImageStoreDao imageStoreDao;
33+
@Inject
34+
protected ImageStoreDetailsDao imageStoreDetailsDao;
2335

2436
/**
2537
* Obtain NFS protocol version (if provided) for a store id.<br/>
@@ -28,7 +40,16 @@ public interface ImageStoreDetailsUtil extends Manager {
2840
* @return {@code null} if {@code nfs.version} is not found for storeId <br/>
2941
* {@code X} if {@code nfs.version} is found found for storeId
3042
*/
31-
public String getNfsVersion(long storeId);
43+
public String getNfsVersion(long storeId) {
44+
String nfsVersion = null;
45+
if (imageStoreDetailsDao.getDetails(storeId) != null){
46+
Map<String, String> storeDetails = imageStoreDetailsDao.getDetails(storeId);
47+
if (storeDetails != null && storeDetails.containsKey("nfs.version")){
48+
nfsVersion = storeDetails.get("nfs.version");
49+
}
50+
}
51+
return nfsVersion;
52+
}
3253

3354
/**
3455
* Obtain NFS protocol version (if provided) for a store uuid.<br/>
@@ -37,5 +58,12 @@ public interface ImageStoreDetailsUtil extends Manager {
3758
* @return {@code null} if {@code nfs.version} is not found for storeUuid <br/>
3859
* {@code X} if {@code nfs.version} is found found for storeUuid
3960
*/
40-
public String getNfsVersionByUuid(String storeUuid);
61+
public String getNfsVersionByUuid(String storeUuid){
62+
ImageStoreVO imageStore = imageStoreDao.findByUuid(storeUuid);
63+
if (imageStore != null){
64+
return getNfsVersion(imageStore.getId());
65+
}
66+
return null;
67+
}
68+
4169
}

0 commit comments

Comments
 (0)