@@ -1317,15 +1317,16 @@ private void createManagedVolumeCopyTemplateAsync(VolumeInfo volumeInfo, Primary
13171317 AsyncCallbackDispatcher <VolumeServiceImpl , CopyCommandResult > caller = AsyncCallbackDispatcher .create (this );
13181318
13191319 caller .setCallback (caller .getTarget ().managedCopyBaseImageCallback (null , null )).setContext (context );
1320-
1320+ grantAccess ( volumeInfo , destHost , primaryDataStore );
13211321 Map <String , String > details = new HashMap <>();
13221322
13231323 details .put (PrimaryDataStore .MANAGED , Boolean .TRUE .toString ());
13241324 details .put (PrimaryDataStore .STORAGE_HOST , primaryDataStore .getHostAddress ());
13251325 details .put (PrimaryDataStore .STORAGE_PORT , String .valueOf (primaryDataStore .getPort ()));
13261326 // for managed storage, the storage repository (XenServer) or datastore (ESX) name is based off of the iScsiName property of a volume
1327- details .put (PrimaryDataStore .MANAGED_STORE_TARGET , volumeInfo .get_iScsiName ());
1328- details .put (PrimaryDataStore .MANAGED_STORE_TARGET_ROOT_VOLUME , volumeInfo .getName ());
1327+ // For Netapp ONTAP iscsiName or Lun path is available only after grantAccess
1328+ String managedStoreTarget = ObjectUtils .defaultIfNull (volumeInfo .get_iScsiName (), volumeInfo .getUuid ());
1329+ details .put (PrimaryDataStore .MANAGED_STORE_TARGET , managedStoreTarget ); details .put (PrimaryDataStore .MANAGED_STORE_TARGET_ROOT_VOLUME , volumeInfo .getName ());
13291330 details .put (PrimaryDataStore .VOLUME_SIZE , String .valueOf (volumeInfo .getSize ()));
13301331 details .put (StorageManager .STORAGE_POOL_DISK_WAIT .toString (), String .valueOf (StorageManager .STORAGE_POOL_DISK_WAIT .valueIn (primaryDataStore .getId ())));
13311332
@@ -1339,14 +1340,6 @@ private void createManagedVolumeCopyTemplateAsync(VolumeInfo volumeInfo, Primary
13391340 }
13401341
13411342 primaryDataStore .setDetails (details );
1342-
1343- grantAccess (volumeInfo , destHost , primaryDataStore );
1344- volumeInfo = volFactory .getVolume (volumeInfo .getId (), primaryDataStore );
1345- // For Netapp ONTAP iscsiName or Lun path is available only after grantAccess
1346- String managedStoreTarget = ObjectUtils .defaultIfNull (volumeInfo .get_iScsiName (), volumeInfo .getUuid ());
1347- details .put (PrimaryDataStore .MANAGED_STORE_TARGET , managedStoreTarget );
1348- primaryDataStore .setDetails (details );
1349-
13501343 try {
13511344 motionSrv .copyAsync (srcTemplateInfo , destTemplateInfo , destHost , caller );
13521345 } finally {
0 commit comments